#include<bits/stdc++.h>
using namespace std;
int n,m;
int a,b;
int friends[100];
int isRoot[100];
int find(int x)
{
int a=x;
while(x!=friends[x])
x=friends[x];
while(a!=friends[a])
{
int z=a;
a=friends[a];
friends[z]=x;
}
return x;
}
void Union(int a ,int b)
{
int fdA=find(a);
int fdB=find(b);
if(fdA!=fdB)
friends[fdA]=fdB;
}
int main()
{
for(int i=1;i<100;i++)
friends[i]=i;
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>a>>b;
friends[a]=b;
Union(a,b);
}
for(int i=1;i<=n;i++)
{
isRoot[friends[i]]+=1;
}
int ans=0;
for(int i=1;i<=n;i++)
cout<<isRoot[i];
cout<<ans;
}
并查集
最新推荐文章于 2021-08-03 15:34:26 发布