
并查集
文章平均质量分 51
暮光乐鱼
这个作者很懒,什么都没留下…
展开
-
poj 1988 Cube Stacking(并查集)
题目来源:poj-1988 题目大意: 给出n个立方体,可以将立方体移到其他立方体上形成堆;有p个如下操作: ⑴M X Y; 将X堆移动到Y所在堆上面; ⑵C X ; 输出在X所在堆下面的堆的个数。 题目分析: 使用并查集来解决,关键在于如何存储和更新每个立方体,在并查集基础上,再添加两个数组,dis[]用来存放在x下面的立方体个数原创 2015-08-24 18:08:51 · 985 阅读 · 0 评论 -
hdu 1879 继续畅通工程
本题链接:点击打开链接本题大意: 输入n行数据,每行数据前两个表示该条路连通的两个村庄的编号,第三个表示修该条路的成本,最后的0或1表示该路未修或已修过,求在此道路基础上要使道路畅通的最小成本。解题思路: 本题基本上也是使用的kruskal算法,只是多加了一个道路状态,不管该路已修或未修,都要把它连到树上,然后就是看加不加成本的问题。抑或采取一种方法,当原创 2015-08-11 17:56:36 · 624 阅读 · 0 评论 -
hdu 1233 还是畅通工程
本题链接:点击打开链接本题大意: 有n个村庄,n*(n-1)/2条路,输入每条路所连接是哪两个村庄及长度,求使所有村庄均连通(并非都两两连通)所铺公路的最短路程。解题思路: 使用并查集基础及Kruskal算法。使用一结构体存放该条路所连接的两个村庄及公路长度。参考代码:#include#includeusing namespace s原创 2015-08-11 11:45:23 · 560 阅读 · 0 评论 -
hdu 1856 More is better
本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1856本题运用并查集,要计算树的节点的最大数,AC代码:#includeint per[100100];int ans[100100];int max;void init(){ for(int i=1;i<=100000;i++) { per[i]=i;原创 2015-07-29 20:14:39 · 386 阅读 · 0 评论 -
hdu 1213 How Many Tables
本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1213用并查集,判断根节点的个数即为桌子的个数,AC代码:#includeint per[1010];void init(){ for(int i=1;i<=1000;i++) { per[i]=i; } }int find(int x){原创 2015-07-29 17:29:26 · 361 阅读 · 0 评论 -
hdu 1863 畅通工程(kruskal算法)
本题链接:点击打开链接本题题意: 有n条路m个村庄,输入每条路连接哪两个村庄,及修该段路的费用,求使所有村庄均可畅通(并非两两均连通)的最少费用。解题思路: 此题与hdu 1233 还是畅通工程 相类似,均是使用kruskal算法思想。具体请参考代码:#include#includeusing namespace std;int原创 2015-08-11 15:44:06 · 746 阅读 · 0 评论 -
hdu 1301 Jungle Roads
本题链接:点击打开链接本题大意: 首先输入一个n表示有n个村庄,然后是n-1行由每个村庄可到的,并且序列号在本村庄后面的各村庄的序列号及所需道路维护费,现要废弃某些道路,但保留下的道路仍可连通所有村庄并且道路维修费最小(即找出最小生成树)。解题思路: 即使用kruskal算法,使用一结构体存放每条道路连通的两个村庄序列号,及道路维修费用,将费用从小到大排原创 2015-08-11 20:01:01 · 568 阅读 · 0 评论 -
150729听课总结
int per[1100];int n; void init() //初始化节点 { for(int i=1;i<=n;i++) per[i]=i;}int find1(int x) //查找该节点的根,方法一 { int r=x; while(r!=per[r]) //当该节点的根与其节点编号不等时,说明该节点不是该序列的根 r原创 2015-07-29 11:42:47 · 632 阅读 · 0 评论 -
hdu 1272 小希的迷宫
本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272本题使用的是并查集,AC代码:#includeint per[100100];int ans[100100];int flag;int find(int x){ int r=x; while(r!=per[r]) r=per[r]; int j,i原创 2015-07-29 16:42:05 · 370 阅读 · 0 评论 -
hdu1232 畅通工程
本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1232本题使用的是并查集,AC代码:#includeint per[1100];int n,m;void inid(){ int i; for(i=1;i<=n;i++){ per[i]=i; }}int find(int x){ int r=x;原创 2015-07-29 11:44:16 · 516 阅读 · 0 评论 -
hdu 2120 Ice_cream's world I
本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2120本题用并查集判断环的个数,AC代码:#includeint per[1100];int flag;void init(){ for(int i=0;i<1100;i++) per[i]=i;}int find(int x){ int r=x原创 2015-07-29 18:06:13 · 448 阅读 · 0 评论 -
hdu 1102 Constructing Roads
本题链接:点击打开链接本题大意: 有n个村庄,之后输入每个村庄到所有村庄间的距离,然后输入已连通道路数目,及该道路所连通的是哪两个村庄。求使所有村庄均连通所需修道路最短距离。解题思路: 此题有两种方法可解,此处使用的是kruskal算法,首先输入所有村庄道路的距离,然后将每条道路连通的两个村庄及道路距离用一结构体存起来,按距离从小到大排序。然后将乙连原创 2015-08-12 17:25:01 · 615 阅读 · 0 评论