图论-并查集
lab104_yifan
这个作者很懒,什么都没留下…
展开
-
UVA 10158 - War(并查集)
Problem B: War A war is being lead between two countries, A and B. As a loyal citizen of C, you decide to help your country’s espionage by attending the peace-talks taking place these day原创 2013-11-29 08:31:37 · 1490 阅读 · 0 评论 -
UVA 1493 - Draw a Mess(并查集)
UVA 1493 - Draw a Mess题目链接题意:在一个n*m平面上,有4种操作,对应把相应区域颜色涂成v(1思路:并查集,由于颜色涂上去会覆盖,这样我们就可以反向执行操作,这样保证每次操作如果之前有颜色就不能涂,如果没有就可以涂,然后一共有200行,每行都利用并查集压缩路径,查找下一个能涂色的位置即可题目中说三角形边一定是奇数,可居然有偶数的。。。被这个坑原创 2014-08-15 18:45:34 · 972 阅读 · 0 评论 -
UVA 12232 - Exclusive-OR(带权并查集)
UVA 12232 - Exclusive-OR题目链接题意:有n个数字,一开始值都不知道,每次给定一个操作,I a v表示确认a值为v,I a b v,表示确认a^b = v,Q k a1 a2 a3 ... ak,表示判断这些数字的异或值能否确定,能确定就输出值,如果有矛盾就停止思路:带权并查集,权表示和父结点的异或值,那么多数判断的时候,只要所有数字和他的父结点的异或原创 2014-08-04 13:07:17 · 1635 阅读 · 0 评论 -
UVA 1455 - Kingdom(线段树+并查集)
UVA 1455 - Kingdom题目链接题意:给定一些城市坐标点,连在一起的城市称为一个州,现在用两种操作,road表示把城市a,b建一条路,line表示询问一个y轴上穿过多少个州,和这些州共包含多少个城市思路:利用并查集维护每个州的上界和下界还有城市个数,然后每次加进一条路的时候,根据两个集合的位置可以处理出区间的州和城市数如何进行加减,然后利用线段树搞就可以了原创 2014-08-03 14:08:37 · 1229 阅读 · 0 评论 -
UVA 11987 - Almost Union-Find(并查集)
UVA 11987 - Almost Union-Find题目链接题意:给定一些集合,操作1是合并集合,操作2是把集合中一个元素移动到另一个集合,操作3输出集合的个数和总和思路:并查集,关键在于操作2,对于并查集,要去除掉一个结点,如果该结点不是根那就好办了,那么就多开n个结点,每个结点初始父亲都是它的i + n,这样在移动的时候,就不用担心他是根结点了剩下就是普通的带权并原创 2014-07-27 02:06:25 · 1734 阅读 · 0 评论 -
UVA 1160 - X-Plosives(并查集)
UVA 1160 - X-Plosives题目链接题意:每次给定一个两个元素a,b组成的化合物,如果车上有k个化合物,又包含了k个元素,就会形成爆炸物,所以每次装上去前要检查一下,输入一些化合物,求不能装的个数思路:并查集的水题,在同一集合了就不能装,如果不在就可以装代码:原创 2014-07-25 23:08:11 · 879 阅读 · 0 评论 -
UVA 1329 - Corporative Network(带权并查集)
UVA 1329 - Corporative Network题目链接题意:有n个结点,开始都是单独的结点,现在有I操作和E操作,I u v表示吧u的父亲结点设为,距离为|u - v| % 1000,E操作询问u到根的距离思路:带权并查集,就多一个权表示距离即可代码:原创 2014-07-25 23:24:33 · 814 阅读 · 0 评论 -
POJ 1988 Cube Stacking (带权并查集)
Cube Stacking原创 2014-04-17 21:52:47 · 773 阅读 · 0 评论 -
POJ 2524 Ubiquitous Religions (带权并查集)
题目链接:Ubiquitous Religions带权并查集,记录集合个数即可代码:原创 2014-04-17 22:01:52 · 745 阅读 · 0 评论 -
POJ 1733 Parity game(离散化+带权并查集)
题目链接:Parity game题意:有一个全是0,1的序列,给定一些区间[l,r]并且区间1的个数是奇数偶数,求最早矛盾位置思路:带权并查集,对于区间l, r,如果0, l和0, r相同,那么[l,r]为偶数,如果不同为奇数,那么每次执行并查集只要带权,rank = 0表示和祖先相同,rank = 1表示和祖先不同,注意发现矛盾就呀break;不然会wa。坑点。。代码:#incl原创 2014-04-17 22:05:51 · 1131 阅读 · 0 评论 -
POJ 2912 Rochambeau(枚举+带权并查集)
题目链接:Rochambeau题意:一堆人剪刀石头布,有一些人只会出剪刀,一些只会石头,一些只会布,然后有一个裁判可以随便出,给出比的情况,问能否确定裁判,如果可以找出裁判并输出哪条确定的思路:带权并查集,先枚举裁判,然后去进行并查集,和食物链那题处理方法一样,最后判断能确定是不是1,如果是1就是能确定,那么确定位置为出现矛盾的最大位置代码:#include #include原创 2014-04-17 22:09:13 · 1071 阅读 · 0 评论 -
POJ 1703 Find them, Catch them(带权并查集)
题目链接:Find them, Catch them原创 2014-04-17 21:49:59 · 688 阅读 · 0 评论 -
poj 2492 A Bug's Life(带权并查集)
题目链接:A Bug's Life原创 2014-04-17 21:57:05 · 791 阅读 · 0 评论 -
POJ 2236 Wireless Network(并查集)
题目链接:Wireless Network原创 2014-04-17 21:55:06 · 650 阅读 · 0 评论 -
POJ 1611 The Suspects(带权并查集)
带权表示集合总和。代码:原创 2014-04-17 14:34:47 · 643 阅读 · 0 评论 -
poj 1308 Is It A Tree? (并查集)
题目链接:Is It A Tree?题意:判断是不是一棵树。利用并查集看最后是不是都再一个集合内。代码:#include #include const int N = 100005;int a, b, n, m, vis[N], parent[N], flag;int find(int x) { if (x == parent[x]) return x;原创 2014-04-17 14:21:39 · 838 阅读 · 0 评论 -
POJ 1182 食物链(带权并查集)
题目链接:食物链这题是带权并查集的经典题,用rank[i]表示i与i父亲的关系,0为同类,1为吃,2为被吃。rank在压缩路径和合并过程的转化在纸上把所有情况归纳出来,就可以变成一个公式。代码:#include #include const int N = 50005;int n, k, parent[N], rank[N], ans = 0;int find(int原创 2014-04-15 15:59:38 · 908 阅读 · 0 评论 -
fzu 1963 交通建设(最小生成树)
题目链接:Problem 1963 交通建设思路:多建一个虚拟的点,如果有机场,就和这个点相连,然后就是最小生成树问题了,最后要注意如果一开始没有机场,并且最后只有一条边和虚拟点相连,是需要扣掉权值CA的。代码:#include #include #include using namespace std;const int N = 1005;const int原创 2014-03-29 20:51:39 · 1876 阅读 · 0 评论 -
UVA 11165 - Galactic Travel(BFS+twopointer+并查集)
UVA 11165 - Galactic Travel题目链接题意:给定一些不能走的边,要求出从s到t的最短路思路:由于点数多,直接广搜会超时,所以加上优化,已经找过的点就不在重复找了,这点可以利用并查集进行优化,然后对于每个点的每个不能走的区间,可以先排序,然后利用twopointer的性质,每次可以从上次找到的位置往后找即可代码:#include #i原创 2014-09-17 15:20:38 · 1309 阅读 · 0 评论