hdu 1181
来源:互联网 发布:腹肌撕裂者软件 编辑:程序博客网 时间:2024/06/04 17:58
并查集 + 拓扑排序。
拓扑排序具体怎么用还要学习,这个题里面就是从入度为零开始算起。一次只有一个入度为零,若大于一,则UNCERTAIN 如果执行完毕,还有数字没被计算,那么有环,则CONFLICT;
#include<cstdio>#include<vector>#include<cstring>#include<queue>using namespace std;const int maxn = 10000 + 5;struct node{ int a,b; char op;} ship[maxn];int pre[maxn];vector<int> u[maxn];int in[maxn];int n, m, sum;void init(){ sum = n; for(int i = 0; i <= n; i++) u[i].clear(); for(int i = 0; i <= n; i++) pre[i] = i; memset(in, 0, sizeof(in));}int root(int x){ if(x != pre[x]) pre[x] = root(pre[x]); return pre[x];}int merge_set(int x, int y){ int fx = root(x); int fy = root(y); if(fx == fy) return false; else { pre[fx] = fy; return true; }}void top_sort(){ int little = false; queue<int> q; for(int i = 0; i < n; i++) { if(pre[i] == i && !in[i]) q.push(i); } while(!q.empty()) { if(q.size() > 1) little = true; int t = q.front(); sum--; q.pop(); for(int i = 0; i < u[t].size(); i++) { in[u[t][i]]--; if(in[u[t][i]] == 0) { q.push(u[t][i]); } } } if(sum > 0) printf("CONFLICT\n"); else if(little) printf("UNCERTAIN\n"); else printf("OK\n");}int main(){ while(scanf("%d%d", &n, &m) == 2) { init(); for(int i = 0; i < m; i++) { scanf("%d %c %d", &ship[i].a, &ship[i].op, &ship[i].b); if(ship[i].op == '=') { if(merge_set(ship[i].a, ship[i].b)) sum--; } } for(int i = 0; i < m; i++) if(ship[i].op != '=') { int f = root(ship[i].a), s = root(ship[i].b); if(ship[i].op == '>') { u[f].push_back(s); in[s]++; } else { u[s].push_back(f); in[f]++; } } top_sort(); } return 0;}
阅读全文
0 0
- hdu 1181
- hdu 1181
- hdu 1181
- HDU 1181
- hdu-1181
- hdu 1181
- HDU 1181
- hdu 1181
- hdu 1181
- HDU 1181
- hdu 1181
- HDU 1181
- hdu 1181
- hdu 1181
- hdu 1181
- HDU 1181 搜索
- hdu 1181 dfs
- [HDU-1181] FLOYD
- PC端视频解帧后车牌识别的运用
- Unix/Linux 脚本中 “set -e” 的作用
- python-pandas-series
- 一些关于 Iterator 与 多态 与 Collection 与 Iterable 的联系 总结 (Iterator 与 多态 可以解释为什么说 iterator方法中有多态存在)
- 通过file按钮上传的图片如何显示出来 FileReader
- hdu 1181
- C#创建、读写、增加、删除XML操作
- javaee学习日记之java基础之多线程
- (二十四)解释器模式详解
- java 多线程之Exchanger
- 句子的逆序 类似[LintCode]53
- 关于进制转换 二进制与十六进制
- hadoop append 追加文件错误
- Hibernate12_映射关系---manyTomany