同样为裸的拓扑排序
模板题。
中间忘记brea wa了一次 囧~~~~
代码:
#include<stdio.h> #include<string.h> int to[505],vis[505],mp[505][505]; int flag,sum,n,m; void topo(int x) { if(flag) printf(" "); flag=1; sum++; vis[x]=1; printf("%d",x); for(int i=1; i<=n; i++) if(!vis[i]&&mp[x][i]) to[i]--; } int main() { //freopen("a.txt","r",stdin); while(~scanf("%d%d",&n,&m)) { memset(vis,0,sizeof(vis)); memset(mp,0,sizeof(mp)); memset(to,0,sizeof(to)); while(m--) { int a,b; scanf("%d%d",&a,&b); if(mp[a][b]==0) { mp[a][b]=1; to[b]++; } } sum=flag=0; while(sum<n) { for(int i=1; i<=n; i++) if(!vis[i]&&!to[i]) { topo(i); break; } } printf("\n"); } return 0; }