uva 10305 Ordering Tasks

来源:互联网 发布:nba2017球员数据排名 编辑:程序博客网 时间:2024/06/05 00:26

题意:拓扑排序模版题~~~


AC代码:

#include <iostream>#include <cstdio>#include <queue>using namespace std;const int maxn = 105;int n,m;int edge[maxn][maxn];int in[maxn];int res[maxn];bool input(){scanf("%d%d",&n,&m);if(!n && !m) return false;int u,v;//for(int i = 1; i <= n; i++){in[i] = 0;for(int j = 1; j <= n; j++){edge[i][j] = 0;}}for(int i = 0; i < m; i++){scanf("%d%d",&u,&v);edge[u][v] = 1;in[v]++;}return true;}void topsort(){queue<int> q;int cnt = 0;for(int i = 1; i <= n; i++){if(in[i] == 0) q.push(i);}while(!q.empty()){int u = q.front(); q.pop();res[cnt++] = u; for(int i = 1; i <= n; i++){if(edge[u][i]){if(--in[i] == 0)q.push(i);}}}}void solve(){topsort();printf("%d",res[0]);for(int i = 1; i < n; i++){printf(" %d",res[i]);}puts("");}int main(){while(input()){solve();}return 0;}


0 0