并查集:NEEPUOJ3015畅通工程

标签: 并查集 NEEPUOJ
6人阅读 评论(0) 收藏 举报

利用简单并查集解决,每输入一个数据改变相应元素的祖宗,统计完毕后,数组遍历查看有N个连通的区域。想要让这些连通区域全部连通成一个整体,只需要添加N-1条道路即可。

每组数据都需要初始化数组,令它们的祖宗都是他们自己(即一开始每个城镇都没有连通),分析完毕。

#include<stdio.h>
#include<stdlib.h>
void init(int max);
void unionf(int m,int n);
int getf(int num);
int array[1000];
int main(int argc,char* argv[])
{
	int m,n;
	while(scanf("%d",&m),m)
	{
		scanf("%d",&n);
		init(m);
		while(n--)
		{
			int i,j;
			scanf("%d%d",&i,&j);
			unionf(i,j);
		}
		int ind,num;
		for(ind=1,num=0;ind<=m;ind++)
			if(array[ind]==ind)
				num++;
		printf("%d\n",num-1);
	}
	return EXIT_SUCCESS;
}
void init(int max)
{
	int i;
	for(i=1;i<=max;i++)
		array[i]=i;
	return;
}
void unionf(int m,int n)
{
	int i,j;
	i=getf(m);
	j=getf(n);
	if(i!=j)
		array[j]=i;
	return;
}
int getf(int num)
{
	if(array[num]==num)
		return num;
	else
	{
		array[num]=getf(array[num]);
		return  array[num];
	}
}


查看评论

ACM-并查集之畅通工程——hdu1232

ACM 并查集 畅通工程 hdu1232 并查集理解
  • lx417147512
  • lx417147512
  • 2014-04-16 09:21:28
  • 2563

HDU1232——畅通工程(并查集)

Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只...
  • blue_skyrim
  • blue_skyrim
  • 2015-12-04 18:32:12
  • 1646

hdu 1232 畅通工程(并查集模板题)

畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub...
  • u012964281
  • u012964281
  • 2014-04-14 16:40:11
  • 774

HDU1232 畅通工程 并查集

这题是并查集的简单运用。我所利用的并查集没有经过优化。只用到了初始化(每个元素都是一个集合)、查找(某个 元素所在的集合,集合以根节点标志)、合并(两集合不属于同一集合则合并) 这题的主要思想在于...
  • Lulipeng_cpp
  • Lulipeng_cpp
  • 2012-06-25 11:03:30
  • 5041

HDU1863 - 畅通工程 最小生成树的并查集方法实现

HDU1863 - 畅通工程 最小生成树的并查集方法实现
  • P_rogrammer
  • P_rogrammer
  • 2015-08-25 16:28:36
  • 863

畅通工程(并查集的运用)

题目描述如下: 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过...
  • a130737
  • a130737
  • 2015-03-19 14:04:48
  • 551

HDU 1232 畅通工程 【并查集模板】

畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub...
  • DTL66
  • DTL66
  • 2016-08-01 10:04:14
  • 140

HDU-1233-还是畅通工程

题目链接还是畅通工程Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total...
  • sxc1414749109
  • sxc1414749109
  • 2015-05-06 22:39:46
  • 237

并查集---畅通工程

图论中经常用到的一个算法就是并查集,主要功能就是判断若干个结点是否属于同一集合,或者求连通分量。最典型的应用就是各种路线联通的最小花费。有些时候用并查集能解决的问题用DFS或者最小生成树也能解决,哪个...
  • kobebryantlin0
  • kobebryantlin0
  • 2017-02-10 00:18:00
  • 247

hdu1875畅通工程再续——基础并查集

简单的并查集,很好做哦 相信大家都听说一个“百岛湖”的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现。现在政府决定大力发展百岛湖,发展首先要解决的问题当然是交通问...
  • WAR___NING
  • WAR___NING
  • 2015-05-27 18:55:07
  • 913
    个人资料
    等级:
    访问量: 44
    积分: 54
    排名: 168万+
    文章分类
    文章存档