hdu 1811(拓扑排序+并查集)
解题思路:
拓扑排序的两个性质:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<queue>
using namespace std;const int maxn = 10005;
int n,m,cnt,fa[maxn],in[maxn];
int que[maxn],head,tail;
vector<int> G[maxn];void init()
{for(int i = 0; i <= n; i++)fa[i] = i;memset(in,0,sizeof(in));cnt = n;head = tail = 0;
}int find(int x)
{if(fa[x] == x) return x;return fa[x] = find(fa[x]);
}void Union(int x,int y)
{int fx = find(x);int fy = find(y);if(fx != fy){fa[fy] = fx;cnt--;}
}int main()
{char str[2];int a,b;while(scanf("%d%d",&n,&m)!=EOF){bool f1 = false,f2 = false;init();for(int i = 1; i <= n; i++){scanf("%d %s %d",&a,str,&b);if(str[0] == '=')Union(a,b);else if(str[0] == '>'){int fa = find(a);int fb = find(b);if(fa == fb){f1 = true;continue;}in[fb]++;G[fa].push_back(fb);}else{int fa = find(a);int fb = find(b);if(fa == fb){f1 = true;continue;}in[fa]++;G[fb].push_back(fa);}}for(int i = 0; i < n; i++)if(in[i] == 0 && find(i) == i)que[tail++] = i;while(head < tail){if(tail - head > 1) f2 = true;int t = que[head++];cnt--;for(int i = 0; i < G[t].size(); i++){in[G[t][i]]--;if(in[G[t][i]] == 0)que[tail++] = G[t][i];}}if(cnt > 0 || f1 == true)printf("CONFLICT\n");else if(f2 == true)printf("UNCERTAIN\n");else printf("OK\n");}return 0;
}
hdu 1811(拓扑排序+并查集)相关推荐
- HDU1811 Rank of Tetris 拓扑排序+并查集 OR 差分约束最短路+并查集
题目链接 题意:就是给你一堆关系,看能不能排出个确定的顺序 做法: 1. 拓扑排序+并查集 应该很容易想到的一种思路,大于小于建立单向边.对于相等的呢,就把他们缩成一个点.就用并查集缩成一个点就行了 ...
- Leetcode 1436旅行终点站 拓扑排序 并查集与队列
题目介绍 题目难度: easy 给你一份旅游线路图,该线路图中的旅行线路用数组 paths 表示,其中 paths[i] = [cityAi, cityBi] 表示该线路将会从 cityAi 直接前往 ...
- HDU1811 Rank of Tetris【拓扑排序+并查集】
Rank of Tetris Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- CodeForces - 1463E Plan of Lectures(拓扑排序+并查集缩点)
题目链接:点击查看 题目大意:给出一棵有根树,树边都是有向边,再给出 kkk 个关系 (x,y)( x , y )(x,y),其意义是访问完点 xxx 后需要立即访问点 yyy,问是否存在一种合适的拓 ...
- HDU 4857 拓扑排序 优先队列
n个数,已经有大小关系,现给m个约束,规定a在b之前,剩下的数要尽可能往前移.输出序列 大小关系显然使用拓扑结构,关键在于n个数本身就有大小关系,那么考虑反向建图,优先选择值最大的入度为零的点,这样得 ...
- LeetCode 1697. 检查边长度限制的路径是否存在(排序+并查集)
文章目录 1. 题目 2. 解题 1. 题目 给你一个 n 个点组成的无向图边集 edgeList ,其中 edgeList[i] = [ui, vi, disi] 表示点 ui 和点 vi 之间有一 ...
- hdu 1811Rank of Tetris (并查集 + 拓扑排序)
1 /* 2 题意:这些信息可能有三种情况,分别是"A > B","A = B","A < B",分别表示A的Rating高于B ...
- HDU 2473 Junk-Mail Filter(并查集的删除操作)
题目地址:HDU 2473 这题曾经碰到过,没做出来. .如今又做了做,还是没做出来. ... 这题涉及到并查集的删除操作.想到了设一个虚节点,可是我把虚节点设为了要删除的点的父节点.一直是栈溢出,目 ...
- LeetCode 1135. 最低成本联通所有城市(最小生成树+排序+并查集)
文章目录 1. 题目 2. 解题 1. Kruskal 2. prim 1. 题目 想象一下你是个城市基建规划者,地图上有 N 座城市,它们按以 1 到 N 的次序编号. 给你一些可连接的选项 con ...
最新文章
- 给博客增加了一个主题Nautica02Liquid
- oracle安装时ins-32031,安装oracle数据库时的报错处理[INS-35172]
- 【Kaidi安装问题】install_mkl.sh报错,没有数字签名
- 近期必读的5篇AI顶会CVPR 2020 GNN (图神经网络) 相关论文
- Docker镜像仓库清理的探索之路
- Moderate Modular Mode %,取模运算性质,数轴,思维
- java ceilingentry_java.util.TreeMap.ceilingKey()
- “噪声对比估计”杂谈:曲径通幽之妙
- Mac OS X下64位汇编与Linux下64位汇编的一些不同
- 【bfs】Replication G(P7151)
- 在MFC程序中增加控制台窗口
- 求二进制数中1的个数(转)
- JZOJ 3517. 空间航行
- This is probably because there is no OLE editor registered against the type of file you were trying
- 易智瑞大赛——地图故事组参赛经验
- 凯利KAC交流控制器调试方案
- 解决request-html chromium下载失败原因
- 上周刚号召加班,这周立马双休,董明珠把互联网玩明白了……
- 解决“ Error L6218E Undefined symbol enet_delay (referred from xxxx.o)”问题
- 雨量传感器测试(大众凌渡高尔夫7雨量传感器)