
数据结构-并查集
文章平均质量分 60
JeraKrs
本人目前就职于百度商业研发部,有需要内推的朋友简历可发我邮箱 jerakrs@qq.com
展开
-
hud 1811 Rank of Tetris(拓扑排序+并查集+STL)
值得一做的题目,新手入门,求带!网上有0ms的,求解释?原创 2013-08-03 00:57:18 · 2079 阅读 · 0 评论 -
Codeforces 437D The Child and Zoo(贪心+并查集)
题目链接:Codeforces 437D The Child and Zoo题目大意:小孩子去参观动物园,动物园分很多个区,每个区有若干种动物,拥有的动物种数作为该区的权值。然后有m条路,每条路的权值为该条路连接的两个区中权值较小的一个。如果两个区没有直接连接,那么f值即为从一个区走到另一个区中所经过的路中权值最小的值做为权值。问,平均两个区之间移动的权值为多少。解题思路:并查集+原创 2014-06-14 19:27:08 · 1612 阅读 · 0 评论 -
hdu 3038 How Many Answers Are Wrong(并查集)
题目链接:hdu 3038 How Many Answers Are Wrong题目大意:略。解题思路:并查集水题。#include #include #include using namespace std;typedef long long ll;const int N = 200005;//const ll UFmod = 0x3f3f3f3f3f;s原创 2014-08-08 22:45:58 · 739 阅读 · 0 评论 -
Codeforces 455C Civilization(并查集+dfs)
题目链接:Codeforces 455C Civilization题目大意:给定N,M和Q,N表示有N个城市,M条已经修好的路,修好的路是不能改变的,然后是Q次操作,操作分为两种,一种是查询城市x所在的联通集合中,最长的路为多长。二是连接两个联通集合,采用联通之后最长路最短的方案。解题思路:因为一开时的图是不可以改变的,所以一开始用dfs处理出各个联通集合,并且记录住最大值,然后就原创 2014-08-09 12:03:22 · 3099 阅读 · 0 评论 -
uva 12232 - Exclusive-OR(加权并查集)
题目链接:uva 12232 - Exclusive-OR题目大意:有n个数,一开始并不知道具体的值,现在进行Q次操作。I u k:au的值为kI u v k:au⨁av=kQ k q1q2…qk:求q1⨁q2…⨁qk对于Q操作不能确定的话输出"I don't know."对于I操作矛盾的话则输出是第几条I操作出现矛盾的,并且停止后面所有的操作。解题思路:加权并查集原创 2014-08-24 00:12:28 · 1814 阅读 · 0 评论 -
uva 11987 Almost Union-Find(并查集)
Almost Union-FindI hope you know the beautiful Union-Find structure. In this problem, you're to implement something similar, but not identical.The data structure you need to write is also a co原创 2013-08-08 00:14:39 · 1383 阅读 · 2 评论 -
zoj 3811 Untrusted Patrol(BFS+并查集)
题目链接:zoj 3811 Untrusted Patrol题目大意:给定n,m,k,表示有n个仓库,m条通道,k个传感器,现在给定n个传感器的位置和m条通道,现在要最这n个仓库进行巡逻,要求一次进过给定具有传感器的仓库,每个仓库经过的次数不限,单要求至少进过1次。解题思路:首先判断是否为联通图,不连通的话肯定到不了。其次判断l是否等于k,如果不等于的话,说明至少有一个仓库到不了,原创 2014-09-08 14:37:31 · 1318 阅读 · 0 评论 -
uva 1160 - X-Plosives(并查集)
题目链接:uva 1160 - X-Plosives题目大意:每一种化合物由两种简单的元素组成,现在有n种化合物要装车,如果出现说有k种化合物刚好由k种元组组成,就会发生化学发应。工人在每次装车的时候会检查是否有可能发生发应,有的话将放弃装车。问说最后有几个化合物没有装车。解题思路:并查集,将每个元组视为一个节点,一种化合物视为边,如果新增一条边形成环则不能加入,统计没有添加的边数原创 2014-08-23 13:53:43 · 1859 阅读 · 0 评论 -
uva 1329 - Corporative Network(加权并查集)
题目链接:uva 1329 - Corporative Network题目大意:有n个节点,初始时每个节点的父节点都不存在,每次执行一个I操作和E操作:I操作:吧节点u的父节点设为v,距离为|u-v| % 1000,输入保证u没有父节点E操作:询问u到根节点的距离。解题思路:裸的加权并查集。#include #include #include #include原创 2014-08-23 13:55:45 · 1032 阅读 · 0 评论 -
uva 1493 - Draw a Mess(并查集)
题目链接:uva 1493 - Draw a Mess题目大意:给定一个矩形范围,有四种上色方式,后面上色回将前面的颜色覆盖,最后问9种颜色各占多少的区域。解题思路:用并查集维护每个位置对应下一个可以上色的位置。然后将上色倒转过来处理,就解决了颜色覆盖的问题。#include #include #include #include #include using nam原创 2014-08-28 00:13:11 · 1553 阅读 · 0 评论 -
hdu 3172 Virtual Friends(并查集)
题目链接:hdu 3172 Virtual Friends题目大意:给定一个社交网络的关系,确定朋友的朋友是朋友,每次给定两个人是朋友,要相应输出该社交圈有多少人。解题思路:并查集水题。#include #include #include #include #include #include using namespace std;const int maxn原创 2014-10-29 21:18:09 · 691 阅读 · 0 评论 -
poj 2513 Colored Sticks(欧拉通路+并查集+字典树)
题目链接:poj 2513 Colored Sticks题目大意:有N个木棍,每根木棍两端被涂上颜色,现在给定每个木棍两端的颜色,不同木棍之间拼接需要颜色相同的端才可以,问最后能否将N个木棍拼接在一起。解题思路:欧拉通路+并查集+字典树。欧拉通路,每个节点的统计度,度为奇数的点不能超过2个。并查集,判断节点是否完全联通。字典树,映射颜色。#include原创 2014-10-29 21:31:48 · 1085 阅读 · 0 评论 -
hdu 5438 Ponds(并查集+拓扑序)
题目链接:hdu 5438 Ponds先把点按照类似拓扑排序的方法删掉,然后对剩下的点用并查集维护,并且维护联通分量的点个数和权值和。#include #include #include #include #include using namespace std;typedef long long ll;const int maxn = 1e4 + 5;原创 2015-09-13 21:34:08 · 863 阅读 · 0 评论 -
hdu 4786 Fibonacci Tree(并查集)
题目链接:hdu 4786 Fibonacci Tree解题思路首先判断是否可以连通,然后对黑白边分别做并查集连通求连通分量,连通分量即为对应白黑边必须选的边数。代码#include <cstdio>#include <cstring>#include <vector>#include <algorithm>using namespace std;const int maxn = 1e5 +原创 2015-10-22 19:45:30 · 441 阅读 · 0 评论 -
hdu 4496 D-City(并查集)
题目链接:hdu 4496 D-City题目大意:给出一张图,按照给定边的顺序逐个删除,问没删除一条之后的联通块数量。解题思路:逆向并查集求联通分量,假设一开始各个城市都不连通,然后从最后一条边开始添加,如果新添加的边联通了两个联通块,那么联通分量就要减1,最后在正序输出即可。#include #include const int N = 10005;c原创 2014-04-25 22:45:49 · 1294 阅读 · 0 评论 -
poj 1988 Cube Stacking(带权并查集)
题目链接:poj 1988 Cube Stacking题目大意:给出n,表示有n个立方体,p次操作(p未给出)操作分两种,M a b 将a所在列的正方体整个移动至b所在的立方体上面,C a 计算在a下面有几个立方体。解题思路:带权并查集,根为最底下的立方体,权值代表当前立方体下面有几个,然后在一个数组记录说每一列有多少个立方体,在和并两列的时候作为移动那列的权值。原创 2014-04-17 22:29:59 · 1063 阅读 · 0 评论 -
poj 2236 Wireless Network(并查集)
题目链接:poj 2236 Wireless Network题目大意:在一次地震过后,机房的电脑全部损坏了,给出n台电脑的坐标,以及有的连接线的长度d,现在进行若干次操作,O x 表示将x号电脑修好,那么就可以与离这台电脑的距离小于d并且已经修好过的电脑相连;S x 检查x和y是否联通。解题思路:首先将每台电脑可以联通到的电脑先预处理出来,然后在开一个标记数组表示哪些原创 2014-04-17 15:27:44 · 1051 阅读 · 0 评论 -
uva 10004 Bicoloring(并查集)
Bicoloring In 1976 the ``Four Color Map Theorem" was proven with the assistance of a computer. This theorem states that every map can be colored using only four colors, in such a way tha原创 2013-08-01 00:10:20 · 1585 阅读 · 0 评论 -
uva 208 Firetruck (DFS + 并查集)
Firetruck The Center City fire department collaborates with the transportation department to maintain maps of the city which reflects the current status of the city streets. On any given原创 2013-08-04 14:09:20 · 1269 阅读 · 0 评论 -
uva 10608 - Friends(并查集)
题目链接:10608 - Friends题目大意:给出n和m,表示有n个人和m组关系,然后给出m行数据,每行数据含a、b表示a和b为一组的,问最后哪一组人数最多,输出最多的人数。解题思路:可以说是一道裸的并查集,开一个cnt数组用于记录各组的人数,初始值为1,然后每次合并两个组的时候cnt数组也要想加,最后输出最大的cnt[i]就可以了。#include原创 2013-10-15 23:15:02 · 1481 阅读 · 0 评论 -
uva 10158 - War(并查集)
题目链接:10158 - War题目大意:有n个人,若干个命令,每个人分属于不同的国家,并且代表国家与其他代表会谈,这将决定国与国之间的同盟关系,1:a与b结盟 2:a与b决裂(成为敌人) 3:判断a与b是否为同盟(不包括不确定) 4:判断a与b是否为敌人。注意:同盟的同盟是同盟,敌人的敌人是朋友。添加新的关系时与已有的关系冲突的话输出-1。解题思路:开一个2 * n原创 2013-10-15 23:27:23 · 1380 阅读 · 0 评论 -
uva 11106 - Rectilinear Polygon(优先队列+链表+并查集)
题目链接:uva 11106 - Rectilinear Polygon题目大意:给出若干个点,判断说能否将这若干个点连成一个全为直角的图形,要求没有一条线段经过三点。输出图形的周长。解题思路:首先同以横坐标相邻的两个一定相连,同理纵坐标。然后会由说可能选完的的边出现了相交的情况或者说不止一个图形。不止一个图形比较好解决,并查集判断所有点是否联通。相交的情况就比较复原创 2014-01-11 01:11:31 · 1553 阅读 · 0 评论 -
Codeforces 400D Dima and Bacteria(Floyd+并查集)
题目链接:Codeforces 400D Dima and Bacteria题目大意:给出n,m和k,表示有n个细菌,m种仪器和k种细菌,给出k种细菌的数量ci,然后每个细菌按照种类排成一排(所以有第i种细菌的序号从∑(1≤j≤i-1)cj + 1 到∑(1≤j≤i)cj);接下来给出m种仪器,有u,v,x三个值,表示说从可以在第u,v号细菌之间移动能量,代价为x。请帮助博士判断说这些原创 2014-03-07 13:03:13 · 1698 阅读 · 0 评论 -
poj 1703 Find them, Catch them(带权并查集)
题目链接:poj 1703 Find them, Catch them题目大意:在城市中有两个大的帮派,Gang Dragon 和Gang Snake,先在有n个人被抓了,警察队他们进行m次操作,操作分为两种,询问A a b, 要求判断a和b是不是属于同一个团伙,D a b 表示说a b不属于同一个团伙。解题思路:带权并查集的简单版,权值为1表示和前一个人不属于同一个团原创 2014-04-17 19:02:40 · 1046 阅读 · 0 评论 -
poj 1182 食物链(带权并查集)
题目链接:poj 1182 食物链题目大意:略。解题思路:带权并查集的裸体,每个点除了记录前一个点以外,再多记录下和前一个点的关系。#include #include const int N = 1e5+5;int n, k, f[N], v[N];int getfar(int x) { if (x != f[x]) { int tmp =原创 2014-04-17 12:47:27 · 1048 阅读 · 0 评论 -
poj 1308 Is It A Tree?(并查集)
题目链接:poj 1308 Is It A Tree?题目大意:给出一些点的关系,判断是否是一颗树。解题思路:并查集,如果两个点之间先前已经联通则说明不是一棵树。注意几个坑点:1,空树是一棵树;2,相同的两个点间存在两条或者多条边也是不行的;3,形成环是不行的;4,森林是不行的。#include #include #include #inclu原创 2014-04-17 12:53:33 · 1163 阅读 · 0 评论 -
poj 1611 The Suspects(并查集)
题目链接:poj 1611 The Suspects题目大意:学校有若干个社团,给出每个社团的成员,现在0号同学得了流感,问说至少应该隔离哪些人。解题思路:并查集,开一个数组用于记录当前集合的人数,在合并两个集合的同时将人数相加,作为新集合的人数。#include #include const int N = 30005;int n, m, f[N原创 2014-04-17 13:00:40 · 982 阅读 · 0 评论 -
poj 2492 A Bug's Life(带权并查集)
题目链接:poj 2492 A Bug's Life题目大意:一个博士原创 2014-04-17 13:32:07 · 846 阅读 · 0 评论 -
poj 2524 Ubiquitous Religions(并查集)
题目链接:poj 2524 Ubiquitous Religions题目大意:原创 2014-04-17 13:38:28 · 764 阅读 · 0 评论 -
poj 1733 Parity game(带权并查集+离散化)
题目链接:poj 1733 Parity game题目大意:给出n,表示有一个长度为n由01组成的序列,给出m次询问,a b odd/even 表示在a~b这个区间上1的个数是奇数还是偶数,找到最先矛盾的那条语句。解题思路:因为n非常大,但是询问非常小,所以要将点map离散化,我的做法是用两个map来处理,一个是f数组,一个v数组,每次有一个新的区间a b,就让b->a-1原创 2014-04-17 13:53:40 · 1198 阅读 · 0 评论 -
poj 2912 Rochambeau(暴力+并查集)
题目链接:poj 2912 Rochambeau题目大意:n个小伙伴进行猜拳有戏,除了一个比较聪明的家伙以外,其他人只会出单一的一种,给出m中猜拳的结果,要求找出那个比较聪明的小伙伴序号,并且输出在第几次猜拳可以确定。(注意,=前后可能有空格)解题思路:枚举每个人作为最聪明的家伙,如果将他所有的关系都剔除后还有矛盾的情况,则说明他不是要找的那个家伙,如果存在两个以上,则原创 2014-04-17 14:11:03 · 1554 阅读 · 0 评论 -
hdu 5876 Sparse Graph(BFS+并查集)
题目链接:hdu 5876 Sparse Graph/****************** * Author: Jerakrs * Time: 2016.10.01 * Problem: 给定一张图不存在边,求从起点S到各个点的距离 * Solve: BFS,遍历点时可以用并查集做路劲压缩,经过的点不需要重复检查* Complexity: o( n ) 并查集压缩路径复杂度为原创 2016-10-01 22:49:56 · 785 阅读 · 0 评论