拓撲排序,不用判斷是否有環,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; }