SGU 230 拓扑排序
2014-05-09 17:43
246 查看
利用拓扑排序,判断环即可。
#include <stdio.h> #include <iostream> #include <queue> #include <algorithm> #include <map> #include <vector> #include <cmath> #include <string.h> #include <stdlib.h> #include <time.h> #include <fstream> #include <set> #include <stack> #include <list> using namespace std; #define READ freopen("acm.in","r",stdin) #define WRITE freopen("acm.out","w",stdout) #define ll long long #define ull unsigned long long #define uint unsigned int #define PII pair<int,int> #define PDD pair<double,double> #define fst first #define sec second #define MS(x,d) memset(x,d,sizeof(x)) #define INF 0x3f3f3f3f #define ALL(x) x.begin(),x.end() #define PB push_back #define MOD 99991 #define MAX 1000000 int n,m; vector<int> G[20000]; vector<int> topo; bool judge() { int du[20000]; int cnt=0; queue<int> q; MS(du,0); for(int i=1;i<=n;i++) for(int j=0;j<G[i].size();j++) du[G[i][j]]++; for(int i=1;i<=n;i++) if(!du[i]) q.push(i),topo.push_back(i); cnt+=q.size(); while(!q.empty()) { int u=q.front(); q.pop(); for(int i=0;i<G[u].size();i++) { int v=G[u][i]; du[v]--; if(!du[v]) q.push(v),cnt++,topo.push_back(v); } } return cnt==n; } int main() { READ; scanf("%d%d",&n,&m); for(int i=0;i<m;i++) { int f,t; scanf("%d%d",&f,&t); G[f].push_back(t); } int ans[20000]; if(judge()) { for(int i=1;i<=n;i++) ans[topo[i-1]]=i; for(int i=1;i<=n;i++) { cout<<ans[i];//<<" "; if(i!=n) cout<<" "; } cout<<endl; } else puts("No solution"); return 0; }
相关文章推荐
- sgu 230 分类: sgu 2015-06-21 15:42 22人阅读 评论(0) 收藏
- SGU 219 Synchrograph(拓扑排序)
- sgu 230
- sgu-230 Weighings
- SGU 230. Weighings (拓扑排序)
- hdu1285 拓扑排序 java实现
- UVA 1423 Guess 【拓扑排序】
- poj 2367 Genealogical tree (拓扑排序)
- hdoj 2647 Reward【反向拓扑排序】
- HDU 2647--Reward【拓扑排序】
- POJ 2367 -- Genealogical tree【拓扑排序 && 水题】
- HD1285 确定比赛名次 【拓扑排序】
- hdoj 3342 Legal or Not 【拓扑排序】
- POJ 3648 Wedding(2-SAT 拓扑排序输出任意一种解决方案)
- 拓扑排序(1)
- HDU - 4857 逃生(反向建图 + 拓扑排序)
- 2015 Multi-University Training Contest 10 (hdu 5406-5416)数据结构+dp+矩阵快速幂+bitset优化拓扑排序+(dp&树状数组)
- poj 3687 Labeling Balls 【拓扑排序】
- poj3687 Labeling Balls 拓扑排序
- UVA-230 图书管理系统