概述
并查集
#include<bits/stdc++.h>
using namespace std;
int f[30020];
int find(int x)
{
if(f[x]!=x)
f[x]=find(f[x]);
return f[x];
}
void make(int a,int b)
{
int f1=find(a);
int f2=find(b);
if(f1!=f2)
f[f2]=f1;
}
int main()
{
int n,m,a,b,k;
int kase=1;
while(scanf("%d%d",&n,&m)==2)
{
if(n==0&&m==0)
break;
for(int i=0;i<=n;i++)
f[i]=i;
for(int i=1;i<=m;i++)
{
scanf("%d%d",&k,&a);
for(int i=1;i<=k-1;i++)
{
scanf("%d",&b);
make(a,b);
}
}
int ans=0;
for(int i=0;i<=n;i++)
{
if(find(i)==find(0))
ans++;
}
printf("%dn",ans);
}
return 0;
}
转载于:https://www.cnblogs.com/jzssuanfa/p/6772796.html
最后
以上就是舒适小馒头为你收集整理的POJ 1611 The Suspects(并查集)的全部内容,希望文章能够帮你解决POJ 1611 The Suspects(并查集)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复