标签:des style blog http io ar os sp for
解题思路:http://blog.csdn.net/niushuai666/article/details/6662911
#include<stdio.h>
int pre[1010];
int find(int root)
{
if(root!=pre[root])
{
pre[root]=find(pre[root]);
}
return pre[root];
}
void unionroot(int root1,int root2)
{
int x,y;
x=find(root1);
y=find(root2);
if(x!=y)
{
pre[x]=y;
}
}
int main()
{
int m,n;
int start,end;
int x,y;
int num;
int i;
while(scanf("%d %d",&m,&n)!=EOF&&m)
{
num=0;
for(i=1;i<=m;i++)//即最开始的时候每一个城镇都是一块孤立的区域
pre[i]=i;
while(n--)
{
scanf("%d %d",&start,&end);
x=find(start);
y=find(end);
unionroot(x,y);//将我们输入的一组城镇连接起来
}
for(i=1;i<=m;i++)
{
if(pre[i]==i)//检查到最后还有几块不连通的区域,然后修路将它们连接起来
num++;
}
printf("%d\n",num-1);//n块不连通的区域只需要n-1条路
}
}
标签:des style blog http io ar os sp for
原文地址:http://www.cnblogs.com/wuyuewoniu/p/4122360.html