【拓扑排序】 HDOJ 3342 Legal or Not
2014-08-17 11:01
309 查看
水拓扑。。。
#include <iostream> #include <queue> #include <stack> #include <map> #include <set> #include <bitset> #include <cstdio> #include <algorithm> #include <cstring> #include <climits> #include <cstdlib> #include <cmath> #include <time.h> #define maxn 105 #define maxm 10005 #define eps 1e-10 #define mod 998244353 #define INF 999999999 #define lowbit(x) (x&(-x)) #define mp mark_pair #define ls o<<1 #define rs o<<1 | 1 #define lson o<<1, L, mid #define rson o<<1 | 1, mid+1, R typedef long long LL; //typedef int LL; using namespace std; LL powmod(LL a, LL b){LL res=1,base=a;while(b){if(b%2)res=res*base%mod;base=base*base%mod;b/=2;}return res;} void scanf(int &__x){__x=0;char __ch=getchar();while(__ch==' '||__ch=='\n')__ch=getchar();while(__ch>='0'&&__ch<='9')__x=__x*10+__ch-'0',__ch = getchar();} // head int h[maxn], next[maxm], v[maxm]; int in[maxn], cnt, n, m, ok; queue<int> q; void init(void) { cnt = 0; memset(h, -1, sizeof h); memset(in, 0, sizeof in); } void addedges(int u, int vv) { next[cnt] = h[u], h[u] = cnt, v[cnt] = vv, cnt++; } void read(void) { int a, b; ok = 1; while(m--) { //scanf("%d%d", &a, &b); scanf(a), scanf(b); if(a == b) ok = 0; addedges(a, b), in[b]++; } } void work(void) { m = 0; for(int i = 0; i < n; i++) if(!in[i]) q.push(i), m++; while(!q.empty()) { int u = q.front(); q.pop(); for(int e = h[u]; ~e; e = next[e]) { in[v[e]]--; if(!in[v[e]]) q.push(v[e]), m++; } } if(m == n) printf("YES\n"); else printf("NO\n"); } int main(void) { while(scanf("%d%d", &n, &m), n != 0 || m != 0) { init(); read(); if(ok) work(); else printf("NO\n"); } return 0; }
相关文章推荐
- HDOJ 3342 Legal or Not (拓扑排序)
- HDOJ 3342 Legal or Not(拓扑排序)
- hdoj 3342 Legal or Not 【拓扑排序】
- hdoj 3342 Legal or Not【拓扑排序】
- HDOJ 3342 Legal or Not 【拓扑排序】
- hdoj 3342 Legal or Not【拓扑排序】
- HDOJ 3342 Legal or Not (拓扑排序)
- HDOJ--3342--Legal or Not(拓扑排序)
- hdu 3342 Legal or Not(拓扑排序) HDOJ Monthly Contest – 2010.03.06
- HDOJ 3342 Legal or Not (拓扑排序)
- hdoj 3342 Legal or Not 【拓扑排序 判断是否存在可行解】
- HDU 3342 -- Legal or Not(拓扑排序)
- hdu 3342 Legal or Not(DAG的拓扑排序)
- HDU 3342 Legal or Not(拓扑排序)
- hdu 3342 Legal or Not(拓扑排序)
- HDU 3342 Legal or Not(拓扑排序)
- hdu 3342 Legal or Not(拓扑排序)
- HDU 3342 Legal or Not(简单拓扑排序判定)
- 【HDU】3342 Legal or Not 拓扑排序
- 杭电 3342 Legal or Not(拓扑排序)