标签:
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 47668 Accepted Submission(s): 25401
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
typedef long long ll;
using namespace std;
const int N=10000;
int rank[N];
int parent[N];
int findset(int x)
{
if(x!=parent[x])
x=findset(parent[x]);
return parent[x];
}
void unionn(int root1,int root2)
{
int x=findset(root1);
int y=findset(root2);
if(x==y)
return ;
if(x<y)
parent[x]=y;
else if(y<=x)
parent[y]=x;
}
int main()
{
int n,m;
while(scanf("%d",&n)!=EOF)
{
if(n==0)
{
break;
}
int i;
scanf("%d",&m);
for(i=1;i<=n;i++)
parent[i]=i;
int x,y;
for(i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
unionn(x,y);
}
int ans=0;
for(i=1;i<=n;i++)
{
if(parent[i]==i)
ans++;
}
printf("%d\n",--ans);
}
}
标签:
原文地址:http://www.cnblogs.com/Aa1039510121/p/5873871.html