
并查集
yzj577
这个作者很懒,什么都没留下…
展开
-
HDU 1213 How Many Tables 并查集
这是一道简单的并查集的题目,跟UVA 10608 Friends 差不多。对于统计桌子的数目,我用了两种方法:1、先将桌子数目初始化为n,然后合并一次就减一张。2、先将朋友们分好组,在统计 fa[i]=i 的这些根节点有多少即为所求的桌子数。原创 2014-07-29 14:41:06 · 779 阅读 · 0 评论 -
UVA 10608 Friends 并查集
题目链接:http://vjudge.net/problem/viewProblem.action?id=20432题目大意:朋友的朋友是朋友,求人数最多的那帮家伙有多少人。我刚开始真尝试了一遍的一步一步用数组模拟搜索,拼接······,果断超时了,下次不干那么无聊的事了,明明有好算法,干嘛还暴力呢?#include int fa[30001],tot[30001];int find(int u){ fa[u]==u?u:fa[u]=find(fa[u]); return fa原创 2014-07-29 10:24:02 · 975 阅读 · 0 评论 -
HDU1325 Is It A Tree? 并查集
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1325这题与HDU1272 小希的迷宫 (并查集) 非常像,不过细细看,还是有一点区别的。就是这题的路径是单向的,每次只能由起点指向终点,在连接之前终点必须是根节点。注意的问题:1、不能成环,即每次输入的两个数的根节点不能相同;2、最终根节点数目为一3、注意当只输入“0 0” 时要输出”Case %d is a tree.“4、路径是单向的,即每次只能由起点指向终点,在连接之前终点必须是根节点。原创 2014-07-30 10:48:45 · 587 阅读 · 0 评论 -
HDU1272 小希的迷宫 (并查集)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272 注意问题:1、不能成环,即每次输入的两个数的根节点不能相同;2、只有一个迷宫,即根节点数目唯一;3、注意当只输入“0 0” 时要输出"Yes";4、状态压缩用递归回栈溢出。原创 2014-07-29 17:08:58 · 1269 阅读 · 0 评论 -
HDU1232 畅通工程 并查集
这道题跟HDU 1213 How Many Tables 并查集非常接近,都是赤裸裸的并查集的题。思路:假设还需要建n-1条路,每并一次就自减1。优化:先用数组储存m组数,然后只对这些节点的根节点赋初值fa[u[i]]=u[i];fa[v[i]]=v[i];原创 2014-07-30 17:36:44 · 865 阅读 · 0 评论 -
HDU1856 More is better 并查集
这是道并查集的题目。注意输入0的时候是输出1。跟UVA 10608 Friends 并查集差不多原创 2014-07-30 16:37:24 · 449 阅读 · 0 评论