uva 10305 Ordering Tasks(拓扑排序)

来源:互联网 发布:淘宝会员名跟昵称区别 编辑:程序博客网 时间:2024/05/02 02:10

拓扑排序,不用判断是否有环,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;}


0 0