畅通工程 hdu 1223
#include<stdio.h>
int father[1100],N,M;
int find(int x)
{
return x==father[x]?x:father[x]=find(father[x]);
}
void merge(int x,int y)
{
x=find(x);
y=find(y);
if(x!=y)
father[x]=y;
}
int main( )
{
while(scanf("%d%d",&N,&M),N)
{
int i,j,a,b,count=1;
for(i=1;i<=N;i++)
father[i]=i;
for(i=0;i<M;i++)
{
scanf("%d%d",&a,&b);
if(find(a)!=find(b))
{
merge(a,b);
count++;
}
}
printf("%d\n",N-count);
}
return 0; //N个城镇如果相通至少需要N-1条路
}
posted on 2011-04-30 11:00 more think, more gains 阅读(263) 评论(0) 收藏 举报
浙公网安备 33010602011771号