Uva10305给任务排序(拓扑排序 板子题)

来源:互联网 发布:剑三脸型怎么导入数据 编辑:程序博客网 时间:2024/06/05 02:20

传送门

https://vjudge.net/problem/UVA-10305

#include <bits/stdc++.h>using namespace std;const int maxn=1000; int n, m, G[maxn][maxn], c[maxn], topo[maxn], t;bool dfs(int u){c[u]=-1;for(int v=0;v<n;v++)if(G[u][v]){if(c[v]<0)return false;if(!c[v]&&!dfs(v))return false;}c[u]=1,topo[--t]=u;return true;}bool toposort(){t=n;memset(c,0,sizeof(c));for(int u=0;u<n;u++)if(!c[u])if(!dfs(u))return false;return true;}int main(){//freopen("data.in.txt","r",stdin);while(scanf("%d%d", &n, &m) == 2 && n) {memset(G, 0, sizeof(G));for(int i = 0; i < m; i++) {int u, v;scanf("%d%d", &u, &v); u--; v--;G[u][v] = 1;}if(toposort()) {for(int i = 0; i < n-1; i++)printf("%d ", topo[i]+1);printf("%d\n", topo[n-1]+1);}elseprintf("No\n"); }return 0;}


原创粉丝点击