HDOJ1232 ( 畅通工程 ) 【并查集】

Problem : 1232 ( 畅通工程 )     Judge Status : Accepted
RunId : 5938141    Language : C    Author : qq1203456195
Code Render Status : Rendered By HDOJ C Code Render Version 0.01 Beta
#include <stdio.h>
#include <string.h>
int set[1005],s,n;
void MergeSet(int a,int b)
{
	int i;
	s--;
	for (i=0;i<n;i++)
	{
		if(set[i]==a)
			set[i]=b;
	}
}
int main()
{
	int i,m,a,b,f,t;
	while(scanf("%d",&n),n)
	{
		s=n-1;
		scanf("%d",&m);
		for (i=0;i<n;i++)
			set[i]=i;
		for (i=0;i<m;i++)
		{
			scanf("%d%d",&a,&b);
			f=set[a-1];
			t=set[b-1];
			if(f!=t)
				MergeSet(f,t);
		}
		printf("%d\n",s);
	}
	return 0;
}

 

posted @ 2012-05-13 13:46  ZH奶酪  阅读(481)  评论(0编辑  收藏  举报