Aizu - 2555 Everlasting Zero 模拟
2015-08-22 23:44
459 查看
Aizu - 2555 Everlasting Zero
题意:学习技能,每个技能有不同的要求,问能否学习全部特殊技能
思路:枚举每两个技能,得到他们的先后学习关系,如果两个都不能先学的话就是No了,如果A>B,B>C,但是并没有A>C那么这种情况也是不允许的了,我过的也是比较惊险。
题意:学习技能,每个技能有不同的要求,问能否学习全部特殊技能
思路:枚举每两个技能,得到他们的先后学习关系,如果两个都不能先学的话就是No了,如果A>B,B>C,但是并没有A>C那么这种情况也是不允许的了,我过的也是比较惊险。
#pragma comment(linker, "/STACK:1000000000") #include <bits/stdc++.h> #define LL long long #define INF 0x3f3f3f3f #define IN freopen("in.txt","r",stdin); #define OUT freopen("out.txt", "w", stdout); using namespace std; #define MAXN 105 #define MAXM 25005 bool dayu[MAXN][MAXN], vis[MAXN][MAXN][MAXN]; int in[MAXN]; queue<int> Q; int gao[MAXN][MAXN], di[MAXN][MAXN]; int main() { //IN; int m, n, k, x, y; char s[5]; scanf("%d%d", &m, &n); memset(di, 0, sizeof(di)); memset(gao, INF, sizeof(gao)); for(int i = 1; i <= m; i++){ scanf("%d", &k); for(int j = 1; j <= k; j++){ scanf("%d%s%d", &x, &s, &y); if(s[0] == '<'){ gao[i][x] = min(gao[i][x], y); } else{ di[i][x] = max(di[i][x], y); } } } for(int i = 1; i <= m; i++){ for(int j = 1; j <= n; j++){ if(di[i][j] > gao[i][j]){ printf("No\n"); return 0; } } } memset(dayu, 0, sizeof(dayu)); memset(in, 0, sizeof(in)); for(int i = 1; i <= m; i++){ for(int j = 1; j <= m; j++){ if(i == j) continue; bool flag = false; for(int k = 1; k <= n; k++){ if(di[i][k] > gao[j][k]){ flag = true; break; } } if(!flag){ dayu[i][j] = true; in[j]++; } } } for(int i = 1; i <= m; i++){ for(int j = 1; j <= m; j++){ for(int k = 1; k <= m; k++){ if(i == j || i == k || j == k) continue; if(dayu[i][j] && dayu[i][k] && dayu[k][j]){ vis[i][j][k] = true; vis[i][k][j] = true; vis[j][i][k] = true; vis[j][k][i] = true; vis[k][i][j] = true; vis[k][j][i] = true; } } } } for(int i = 1; i <= m; i++){ for(int j = 1; j <= m; j++){ for(int k = 1; k <= m; k++){ if(i == j || i == k || j == k) continue; if(vis[i][j][k]) continue; printf("No\n"); return 0; } } } for(int i = 1; i <= m; i++){ for(int j = 1; j <= m; j++){ if(i == j) continue; if(!dayu[i][j] && !dayu[j][i]){ printf("No\n"); return 0; } } } printf("Yes\n"); return 0; /* memset(vis, 0, sizeof(vis)); while(!Q.empty()){ Q.pop(); } for(int i = 1; i <= m; i++){ bool flag = false; for(int j = 1; j <= m; j++){ if(dayu[i][j] || i == j) continue; flag = true; break; } if(!flag){ Q.push(i); vis[i] = true; } } int ans = 0; while(!Q.empty()){ int s = Q.front(); vis[s] = true; ans++; Q.pop(); for(int i = 1; i <= m; i++){ if(dayu[s][i]){ in[i]--; if(in[i] == 0 && !vis[i]){ Q.push(i); } } } } if(ans == m){ printf("Yes\n"); } else{ printf("No\n"); }*/ return 0; }
相关文章推荐
- hdoj 1022 Train problem 1【栈 的理解】
- 调用Process.waitfor导致的进程挂起
- sleep() wait() yeild()三者之间的区别?
- hdu 1239 Calling Extraterrestrial Intelligence Again
- Debug Assertion Failed! File: afx.inl
- PAT 1014. Waiting in Line (30)
- unresolved external symbol _winmain@16
- rails yaml with expression or variable (Using ERB in YAML Configuration File)
- 【LeetCode】(70)Climbing Stairs (Easy)
- POJ 1995 Raising Modulo Numbers【快速幂】
- CodeForcesGym 100676G Training Camp
- HN OJ 13375 Flowery Trails (spfa的路径遍历)
- Aizu 2302 On or Off
- poj1363——Rails
- 转:CDC,CPaintDC,CClientDC,CWindowDC区别
- (转载)BeginPaint和GetDC有什么区别?
- HDU2141Can you find it? (二分计算计算Ai+Bj+Ck = X)
- HDU 5344(MZL's xor-(ai+aj)的异或和)
- BFS(最短路) HDOJ 4308 Saving Princess claire_
- hdu 3047 Zjnu Stadium(加权并查集)2009 Multi-University Training Contest 14