poj1611 The Suspects (并查集)

来源:互联网 发布:和讯网社会责任数据 编辑:程序博客网 时间:2024/05/22 08:12

 

题目链接:http://poj.org/problem?id=1611

//非常基础的并查集  可以参考http://www.cnblogs.com/cherish_yimi/archive/2009/10/11/1580839.html
 
#include<iostream>using namespace std;int f[30000],rank[30000];void makeset(int x){int i;for(i=0;i<x;i++)f[i]=i,rank[i]=0;}int findset(int x){if(x!=f[x])f[x]=findset(f[x]);return f[x];}void unionset(int a,int b){int fa=findset(a);int fb=findset(b);if(rank[fa]>rank[fb])f[fb]=fa;else{if(rank[fa]==rank[fb])rank[fb]++;f[fa]=fb;}}int main(){int n,m;while(cin>>n>>m,n||m){int cnt=1;//′ú±í?Dè?êyint i,j;makeset(n);for(i=0;i<m;i++){int t,a,b;cin>>t;cin>>a;for(j=1;j<t;j++){cin>>b;unionset(a,b);a=b;}}int st=findset(0);for(i=1;i<n;i++)if(st==findset(i))cnt++;cout<<cnt<<endl;}return 0;}