hdu 1232 畅通工程(并查集)
来源:互联网 发布:网络基础知识大全ppt 编辑:程序博客网 时间:2024/06/07 06:04
最简单的并查集题了吧!
某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路?
本题只需将联通的村庄联系在一起而已!
#include<stdio.h>
int pre[1010];
int find(int k)
{
if(k==pre[k])
return k;
pre[k]=find(pre[k]);
return pre[k];
}
int main()
{
int n,m,i,a,b,f1,f2,ans;
while(scanf("%d",&n),n)
{
scanf("%d",&m);
for(i=1;i<=n;i++)
pre[i]=i;
for(i=0;i<m;i++)
{
scanf("%d %d",&a,&b);
f1=find(a);
f2=find(b);
if(f1!=f2)
pre[f1]=f2;
}
ans=0;
for(i=1;i<=n;i++)
if(i==pre[i])
ans++;
printf("%d\n",ans-1);
}
return 0;
}
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1232
并查集:
定义
并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。
集就是让每个元素构成一个单元素的集合,也就是按一定顺序将属于同一组的元素所在的集合合并。
初始化
把每个点所在集合初始化为其自身。
通常来说,这个步骤在每次使用该数据结构时只需要执行一次,无论何种实现方式,时间复杂度均为O(N)。
查找
查找元素所在的集合,即根节点。
合并
将两个元素所在的集合合并为一个集合。
通常来说,合并之前,应先判断两个元素是否属于同一集合,这可用上面的“查找”操作实现。
- hdu 1232 畅通工程 并查集
- HDU 1232 畅通工程 并查集
- HDU 1232 畅通工程 (并查集)
- hdu 1232畅通工程 并查集
- hdu 1232 畅通工程 并查集
- HDU--1232--畅通工程--并查集
- 畅通工程-并查集-hdu 1232
- hdu 1232 畅通工程并查集
- HDU 1232 畅通工程 并查集
- hdu 1232 畅通工程 并查集
- hdu 1232 畅通工程(并查集)
- HDU 1232 畅通工程(并查集)
- HDU 1232 畅通工程(并查集)
- HDU 1232 畅通工程 并查集
- 并查集:hdu 1232 畅通工程
- HDU - 1232 畅通工程 <并查集>
- hdu 1232 畅通工程(并查集)
- HDU 1232 畅通工程(并查集)
- Shell模拟多线程/任务队列
- smali语法及参考说明
- AR(Average Recall, 平均查全率), ANMRR(Average Normalized Modified Retrieval Rate, 平均归一化检索秩)
- 将txt文本读入C中(txt数据量大),将C中数据写入txt
- 让服务器支持xml文件下载
- hdu 1232 畅通工程(并查集)
- VMD 1.9.1 安装和使用(Centos6.3)
- 压力测试工具http_load
- iPhone实战:在开发过程中我们要注意什么
- oracle 11g 卸载
- mysql整型长度含义
- 上拉电阻下拉电阻的总结
- 笔记本明明是双核为什么显示四核?
- UVA 12103/poj 3128/hdu 1975/UVALive 3641 Leonardo's Notebook 置换