并查集
文章平均质量分 75
弱菜zc
打完这场就回老家结婚!
展开
-
hdu 1325/poj 1308 Is It A Tree? 并查集
题目链接 题意:给出n条有向边,判断是不是一棵树。 这题和hdu1272题目类似,只是把无向边改成了有向边。多加一个判断条件,保证子节点是根节点。 #include #include #include #include #define N 11000 using namespace std; int pre[N],vis[N],flag,maxn; void init() {原创 2016-04-13 08:43:59 · 1816 阅读 · 6 评论 -
hdu 3018 Ant Trip 一笔画问题
题目链接 题意:给出n个村庄,m条路。Tony和朋友们想遍历所有的路,并且每条路只经过一次。问他们最少要分成几组。 一笔画问题。若一个连通子图的全都是偶节点,则分组+1。若有t个奇节点,则分组+t/2。 欧拉路的判断方法:奇节点的度为2或者0。 注意若一个点没有路与它相连,则不考虑它。 #include #include #include #include #define N 1100原创 2016-04-21 20:31:47 · 609 阅读 · 0 评论 -
hdu 1878 欧拉回路
题目链接 题意:欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路。现给定一个图,问是否存在欧拉回路? 欧拉回路每个顶点的度为偶数,统计度的奇偶即可。用并查集判断连通性。 #include #include #include #include #define N 1100 using namespace std; int num[N],pre[N]; int原创 2016-04-20 20:58:08 · 568 阅读 · 0 评论 -
hdu 1598 find the most comfortable road 枚举+并查集
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1598 题意:给出n个城市,m条路径,若路径中的最大速度和最小速度差越小则越舒适,求给定节点的最小差。 先对路径按速度排序,枚举路径作为最小速度,依次增加路径,直到两个城市连通,即可得到当前最小速度下最小差。取这些最小差的最小值即可。 #include #include #include原创 2016-05-13 21:48:42 · 477 阅读 · 0 评论 -
并查集&MST题集
【HDU】 1213 How Many Tables 基础并查集★ 1272 小希的迷宫 基础并查集★ 1325&&poj1308 Is It A Tree? 基础并查集★ 1856 More is better 基础并查集★ 1102 Constructing Roads 基础最小生成树★ 1232 畅通工程 基础并查集★ 2120 Ice_cream'转载 2016-04-06 15:25:36 · 728 阅读 · 0 评论 -
hdu 2120 Ice_cream's world I 并查集
题目链接 题意:给出n个哨塔,m面墙。被墙围起来的土地可以分给一个人。问一共可以分给多少人土地。 这题的求的是图中环的个数。用并查集来做,读入两个点,当这两个点的父节点相同说明这两个点已经连通,这时候再加上这条边就形成了一个环。以此来统计环的个数。 #include #include #include #include using namespace std; int ans,pre[原创 2016-04-15 20:59:01 · 789 阅读 · 0 评论 -
hdu 1232 畅通工程 并查集模板题
题目链接 题意:n个城镇,有m条路,计算还需要多少条路能让所有的城镇连通。 连通的城镇都在同一个集合中,两个集合要连通只需要加一条路就行。所以只需要计算连通分支数-1即可。 #include #include #include #include using namespace std; int pre[1100]; int findset(int v) { int t1,t2原创 2016-04-15 20:29:03 · 1032 阅读 · 0 评论 -
hdu 1213 How Many Tables 并查集模板题+路径压缩
题目链接 题意:n个人,m对人之间是朋友,求有几个朋友圈。 经典并查集题,给出了路径压缩的模板。 #include #include #include #include using namespace std; int pre[1100]; int findset(int v) { int t1,t2=v; while(v!=pre[v]) v=pre[v];原创 2016-04-11 17:52:16 · 844 阅读 · 0 评论 -
并查集算法和路径压缩
并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。不分享出来真是对不起party了。(party:我靠,关我嘛事啊?我跟你很熟么?) 来看一个实例,杭电1232畅通工程 首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问题。比如随意给你两个点,让你判断它转载 2016-04-11 17:34:07 · 2178 阅读 · 1 评论 -
hdu 1811 Rank of Tetris 拓扑排序+并查集
题目链接 题意:给出n个点,m个关系。判断是否能确定独一无二的先后顺序。 先用并查集把相等的点合并成一个点。然后用拓扑排序判断是否有环,是否同时出现多个入度为0的点。 #include #include #include #include #define N 11000 #define M 22000 using namespace std; struct node { int原创 2016-04-27 08:25:12 · 473 阅读 · 0 评论 -
hdu 1856 More is better 并查集模板题
题目链接 题意:给出n对朋友,求出最大的朋友圈。 注意n=0时,只有一个人,所以输出1。 #include #include #include #include #define N 10000001 using namespace std; int pre[N],maxn,ans,sum[N]; void init() { ans=maxn=0; for(int i=0原创 2016-04-13 16:05:29 · 655 阅读 · 0 评论 -
hdu 1272 小希的迷宫 并查集
题意:判断一张图是否联通且无环。 若一条边的两个节点为同一个父节点,则成环。若所有的节点的父节点相同则联通。注意输入0 0时为Yes。 #include #include #include #include #define N 110000 using namespace std; int flag,pre[N],vis[N],maxn; void init() { for(i原创 2016-04-12 21:51:27 · 1870 阅读 · 1 评论 -
poj 1182 食物链 带权并查集
题目链接:http://poj.org/problem;jsessionid=6DC324CEA3473E8FC76C6BD83E2626DE?id=1182 题意:题目告诉有3种动物,互相吃与被吃,现在告诉你m句话,其中有真有假,叫你判断假的个数(如果前面没有与当前话冲突的,即认为其为真话)。 经典的并查集题目,可以设置权值r[i](i与父亲节点的关系): 0——同类; 1——食原创 2016-05-17 20:27:29 · 523 阅读 · 0 评论