标签:
拓扑排序,不用判断是否有环,dfs挺简单的
代码:
#include<stdio.h> #include<string.h> #include<stdlib.h> 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; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
uva 10305 Ordering Tasks(拓扑排序)
标签:
原文地址:http://blog.csdn.net/sinat_22659021/article/details/47029101