九度oj1526 小米招聘会题目

很简单的一道并查集题目!

不过前提是要会并查集!!


并查集  这里有讲




#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <stdio.h>
using namespace std;
int father[100005],a,b,m,n,i;
int find(int x)
{
    if (father[x]!=x) 
		father[x]=find(father[x]);
    return father[x];
}

int main()
{
    while(scanf("%d",&n) && n!=0)
	{
		for (i=1;i<=n;i++) 
			father[i]=i;
		cin>>m; 
		for (i=1;i<=m;i++)
		{
			scanf("%d%d",&a,&b);
			a=find(a),b=find(b);
			father[a]=b;
		}
		int ans=0;
		for(i=1;i<=n;i++)
		{
			if(find(i)==i)ans++;
		}
		cout<<ans<<endl;
	}
	return 0;
}






猜你喜欢

转载自blog.csdn.net/a511310132/article/details/17168079