
并查集
小白菜又菜
这个作者很懒,什么都没留下…
展开
-
UVa 11503 - Virtual Friends
题目:求并查集元素的个数。分析:哈希表、并查集。利用hash表建立名字和对应数值的关系。利用一个数组记录集合中元素个数,每次合并,把元素个数加到根上即可。注意:如果查询在同一集合,也要输出 。#include #include #include #include #include using namespace std;//union_set__begein原创 2012-11-14 19:40:28 · 1033 阅读 · 0 评论 -
UVa 11690 - Money Matters
题目:一些人去旅游,结束后他们有些人之间的关系变得恶劣了,而他们付的钱并没有完全的均分; 现在问保持友好关系的人之间的钱能否完全均化掉。分析:并查集,数据结构。将还保持友好关系的人构建并查集,判断每个集合的人们是否债务和为零。说明:还是要学英语,其他都是浮云。#include #include #include //union_set__begein原创 2017-11-18 13:30:37 · 580 阅读 · 0 评论 -
UVa 10685 - Nature
题目:自然间中的食物链,已知一些捕食关系,求最大的食物链网的大小。分析:并查集。利用并查集合并集合求出最大的集合元素个数,利用hash存储名字。说明:还以为求最长的路径(⊙v⊙)。#include #include #include //union_set__begeinint union_sets[5005];int union_rank[5005];int un原创 2017-08-03 11:06:24 · 431 阅读 · 0 评论 -
UVa 540 - Team Queue
題目:多級隊列;排隊打飯,如果當一個隊伍裡面有自己團隊的人,就可以插隊到團隊後面;求出隊序列。分析:數據結構。自己實現多級隊列的數據結構。利用鏈錶實現多級隊列的數據機構。 定義兩種結構:1鏈錶頭節點,2鏈錶內節點; 相同團隊,用一個鏈錶維護,為了方便查找,使用hash; 鏈錶頭結點:數據原创 2016-03-12 12:46:55 · 736 阅读 · 1 评论 -
UVa 1160 - X-Plosives
題目:有n個由兩種元素組成的化合物要裝車,如果其中能取出一個子集元素的個數等於化合物的個數,則危險; 現在依次將化合物裝車,遇到危險就放棄(這個化合物不裝車),問有多少元素不裝車。分析:模擬,圖論,并查集。按照題目順序模擬裝車順序。 如果把每個化合物看成一條邊,每種元素看成一個節點,那麼問題就是判斷環; 如果并查集檢原创 2015-11-26 10:03:43 · 543 阅读 · 0 评论 -
UVa 1197 - The Suspects
題目:有一些人(編號0到n-1),0號攜帶病毒,然後給你一些在一起活動過的組隊,問多少人可能攜帶病毒。分析:DS,并查集。直接利用并查集統計即可。說明:confluence弄了一晚上沒裝上╮(╯▽╰)╭。#include //union_set_beginint sets[30001];int rank[30001];int size[30001];void union_原创 2015-11-25 22:21:31 · 575 阅读 · 0 评论 -
UVa 615 - Is It A Tree?
题目:给你一些有向边(端点,长度为1),判断给定的图是否是一棵树。分析:图论,并查集。树是一个所有点都连接的有向无环图(不连接的是森林)。 按照树的定义判断是否有环即可,有环分成两种: 1.链状环;2.存在节点有多个父亲节点; 这两种情况,只要用并查集在合并前判断是否数以一个集合即可,原创 2014-10-04 21:04:04 · 1700 阅读 · 0 评论 -
UVa 10099 - The Tourist Guide
题目:有一个导游,要带领团队从当前点,走到目标点,但是每条路一次性通过的人有数量限制, 所以需要分批次进行。问最少需要分多少次进行。分析:贪心,最短路或最小生成树。图上贪心性质的扩散问题,可以作为最短路或者最小生成树求解。 问题的贪心特性成立很容易证明。 设集合A为当前计算的结果,则对于p∈A且q不在A中,如果点q加原创 2014-03-21 18:18:33 · 1518 阅读 · 0 评论 -
UVa 10227 - Forests
题目:有P个人和T棵树。现在给你某个人听到某棵树倒下声音的一些二元组,如果两个人听到的树的集合相同他们就是同一集合,问人分成几个集合。分析:并查集。因为数据量很小(100)所以直接暴力判断是否相同即可,然后利用并查集处理合并,最后查询并查集中根(sets(i) = i)的个数即是结果。注意:memset在中;恶心的输入格式。#include #include #include原创 2013-10-16 00:46:58 · 1787 阅读 · 0 评论 -
UVa 10158 - War
题目:有n个人,有四种操作:1.朋友设定;2.敌人设定;3.朋友询问;4.敌人询问。对每个操作判断合法性。分析:并查集。通过分析可以知道,朋友都在一个集合,每个集合只能有一个敌对的集合,并且他们是相互敌对的。 (如果一个集合存在2个以上的敌人,那么他们一定是同一个集合的。)所以每个人设置一个对应的enemy, 利用sets(i+n)记录i的敌原创 2013-10-11 20:52:57 · 3615 阅读 · 0 评论 -
UVa 10301 - Rings and Glue
题目:有一些粘有胶水的圆环,散落在地上,问黏在一起最多的整体有几个环组成。分析:并查集、计算几何。判断每两个圆环是否黏在一起即可,利用并查集记录。注意:1.输出格式 0 rings。2.是圆环不是圆。3.并查集合并前要判断;把相同集合的合并会重复计数╮(╯▽╰)╭。#include #include #include #include using namespace st原创 2013-10-11 00:46:08 · 2608 阅读 · 0 评论 -
UVa 10369 - Arctic Network
题目:在二维平面上有很多个城市,现在要把所有城市都连接起来,求最长边的小代价。其中某些城市可以直接用卫星连接、没有长度。分析:MST、并查集。最小生成树,这里利用kruskar算法求解。求出最小生成树上的第p-s长的边即为结果。注意:题目的描述有点纠结。既不是每个点放一个卫星、也不是每个边放一个卫星,而是最大边放2个其他边放1个。#include #include #include原创 2012-12-14 12:08:40 · 1401 阅读 · 0 评论 -
UVa 10583 - Ubiquitous Religions
题目:求并查集集合的个数。分析:并查集。#include #include //union_set_beginint sets[ 50001 ];int rank[ 50001 ];void union_set( int n ){ for ( int i = 0 ; i <= n ; ++ i ) { rank[i] = 0; sets[i] = i; }}原创 2012-12-13 18:35:12 · 2184 阅读 · 0 评论 -
UVa 10608 - Friends
题目:求最大的集合的元素个数。分析:并查集。注意:输入使用while( scanf("%d",&T) != EOF )会TLE。#include #include //union_set_beginint sets[ 30001 ];int rank[ 30001 ];int size[ 30001 ];void union_set( int n ){ for (原创 2012-12-13 19:18:39 · 2196 阅读 · 0 评论 -
UVa 793 - Network Connections
题目:给出网络中的边,查询节点的连接状态。分析:简单题、并查集。注意:数据读入出错会RE。#include #include #include #include #include using namespace std;char E[ 3 ];//union_set__beginint sets[ 10005 ];int rank[ 10005 ];原创 2012-11-14 13:42:22 · 1746 阅读 · 0 评论 -
UVa 459 - Graph Connectivity
题目:求分图个数。分析:简单题、并查集。注意:数据读入方式出错会出现RE或TLE。#include #include #include #include #include using namespace std;char M[ 2 ],E[ 3 ];class union_set{private: int sets[ 26 ]; int rank[ 2原创 2012-11-14 13:44:36 · 1970 阅读 · 0 评论 -
UVa 11857 - Driving Range
题目设计电动汽车的电池容量,已知有n个城市,每个城市都有充电站,m条双向道路(可能两个城市间有多条道路),求最小的电池容量。分析最小生成树。利用kruskal算法,记录最后加入树的边长即可;如果并查集中的节点数量不是城市数量,则有的城市不连通,输出IMPOSIBALLE。说明注意数据大小,防止RE。。。#include &lt;algorithm&gt;#include ...原创 2018-09-21 14:48:50 · 513 阅读 · 0 评论