您的位置:首页 > 其它

zoj The Suspects 并查集

2014-07-08 20:16 375 查看
今天又切了到并查集水题~~~~~

附上代码:

#include <iostream>

using namespace std;

int f[30010];

int cnt[30010];

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(f2!=f1)

{

cnt[f1]+=cnt[f2];

f[f2]=f1;

}

}

int main()

{

int n,m;

while(cin>>n>>m)

{

if(n==0&&m==0)break;

for(int i=0;i<n;i++)

{

f[i]=i;

cnt[i]=1;

}

for(int i=0;i<m;i++)

{

int k,a,b;

cin>>k;

if(k>0)

{

cin>>a;

}

for(int i=1;i<k;i++)

{

cin>>b;

make(a,b);

}

}

int t=find(0);

cout<<cnt[t]<<endl;

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: