首页 > 代码库 > poj-2524-Ubiquitous Religions
poj-2524-Ubiquitous Religions
题目大意:一个学校有n人,其中有m对人是具有相同的宗教信仰,
问这个学校里信仰的宗教数最多有多少个。
解题思路:基础的并查集。具有相同信仰的人归为一个集合,
问这个学校里信仰的宗教数最多有多少个。
解题思路:基础的并查集。具有相同信仰的人归为一个集合,
则最后的集合数量即为结果。求集合数量:判断有多少个根节点,用到根节点的特征(其父节点为自己)
代码如下:
#include<cstdio> #include<cstring> #include<iostream> using namespace std; int n,m; int f[52014]; void init() { for(int i=1; i<=n; i++) f[i]=i; } int find(int x) { return f[x]==x?x:find(f[x]); } void unity(int a,int b) { if(find(a)!=find(b)) f[find(a)]=find(b); } int main() { int ji=1; while(cin>>n>>m) { if(n+m==0)break; init(); while(m--) { int a,b; cin>>a>>b; unity(a,b); } int ans=0; for(int i=1; i<=n; i++) if(f[i]==i) ans++; cout<<"Case "<<ji++<<": "; cout<<ans<<endl; } return 0; }
poj-2524-Ubiquitous Religions
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。