UVa 10305 Ordering Tasks【拓扑排序】
2015-04-25 15:18
507 查看
题意:给出n件事情,m个二元组关系,求它们的拓扑序列
用的队列来做
View Code
用的队列来做
#include<iostream> #include<cstdio> #include<cstring> #include <cmath> #include<stack> #include<vector> #include<map> #include<set> #include<queue> #include<algorithm> using namespace std; #define foreach(i,c) for (__typeof(c.begin()) i = c.begin(); i != c.end(); ++i) typedef long long LL; const int INF = (1<<30)-1; const int mod=1000000007; const int maxn=100005; int ecnt; int n,m; int g[1005][1005],in[1005],ans[maxn]; void toposort(){ queue<int> q; for(int i=1;i<=n;i++) if(in[i]==0) q.push(i); int cnt=0; while(!q.empty()){ int tmp=q.front();q.pop(); ans[++cnt]=tmp; for(int j=1;j<=n;j++){ if(g[tmp][j]){ in[j]--; if(in[j]==0) q.push(j); } } } printf("%d",ans[1]); for(int i=2;i<=cnt;i++) printf(" %d",ans[i]); printf("\n"); } int main(){ while(scanf("%d %d",&n,&m)!=EOF){ if(n==0&&m==0) break; memset(g,0,sizeof(g)); memset(in,0,sizeof(in)); while(m--){ int u,v; cin>>u>>v; g[u][v]=1; in[v]++; } toposort(); } return 0; }
View Code
相关文章推荐
- UVa--10305 Ordering Tasks(拓扑排序)
- UVA10305 Ordering Tasks【DFS】【拓扑排序】
- UVA 10305 Ordering Tasks(拓扑排序)
- 例题6-15 UVa10305 Ordering Tasks(拓扑排序)
- UVa 10305 Ordering Tasks(拓扑排序)
- uva 10305 Ordering Tasks(拓扑排序)
- UVA - 10305 Ordering Tasks(拓扑排序模板题)
- UVa - 10305 - Ordering Tasks(拓扑排序DFS)
- uva 10305 Ordering Tasks(拓扑排序)
- UVa 10305 - Ordering Tasks ( 拓扑排序, DFS, DAG )
- UVa 10305 - Ordering Tasks(拓扑排序)
- UVa 10305 - Ordering Tasks【拓扑排序】
- UVa 10305 - Ordering Tasks 拓扑排序题解
- UVA.10305 Ordering Tasks (拓扑排序)
- Uva 10305 Ordering Tasks(拓扑排序)
- UVA - 10305 Ordering Tasks (拓扑排序)
- UVa 10305 Ordering Tasks (拓扑排序模板)
- 【拓扑排序模板题DFS方法】UVA - 10305 Ordering Tasks
- UVA - 10305 (Ordering Tasks) 拓扑排序
- UVA-10305 Ordering Tasks (拓扑排序)