uva 10305 Ordering Tasks(拓扑排序)

2015-11-21 00:57:08 · 作者: · 浏览: 5

拓扑排序,不用判断是否有环,dfs挺简单的

代码:

?

#include
  
   
#include
   
     #include
    
      int map[105][105]; int visit[105]; int c[105]; int n,m,t; void dfs(int x) { visit[x] = 1; for(int i=1; i<=n; i++) { if(!visit[i]&&map[i][x]==1) { dfs(i); } } c[t++] = x; } int main() { int i,j,x,y; while(scanf(%d%d,&n,&m),m||n) { t = 1; memset(visit,0,sizeof(visit)); memset(map,0,sizeof(map)); for(i=1; i<=m; i++) { scanf(%d%d,&x,&y); map[x][y] = 1; } for(i=1; i<=n; i++) { if(!visit[i]) dfs(i); } for(i=1; i<=n; i++) { printf(%d,c[i]); if(i!=n) printf( ); } puts(); } return 0; }
    
   
  


?

?