poj 1611.The Suspects

来源:互联网 发布:centos虚拟机怎么改ip 编辑:程序博客网 时间:2024/05/20 04:09

The Suspects

#include<iostream.h>const int MAX_N=3000;int n, m, k;int set[MAX_N];//初始化并查集,即将set中n个元素初始化为n个只有一个元素的集合.void Init();//查找元素x所在集合的树根并返回.int Root(int x);//合并树根分别为r1和r2的两个集合.返回合并后集合的树根.int Union(int r1, int r2);int main(){int x, r1, r2;int i, j;while(cin>>n>>m&&!(n==0&&m==0)){Init();for(i=0;i<m;i++){cin>>k;if(k>0){cin>>x;r1=Root(x);for(j=1;j<k;j++){cin>>x;r2=Root(x);r1=Union(r1,r2);}}}cout<<-set[Root(0)]<<endl;}return 0;} void Init(){int i=0;while(i<n){set[i++]=-1;}}int Root(int x){int r, i, j;r=x;while(set[r]>=0){r=set[r];}i=x;while(set[i]>=0){j=set[i];set[i]=r;i=j;}return r;}int Union(int r1, int r2){if(r1==r2){return r1;}else if(set[r1]<set[r2]){set[r1]+=set[r2];set[r2]=r1;return r1;}else{set[r2]+=set[r1];set[r1]=r2;return r2;}}


 

原创粉丝点击