【POJ】1611 The Suspects
阅读原文时间:2023年07月13日阅读:1

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

题意:有学生感染了SARS。一个学生可以加入很多小组。n个学生m个小组,每个小组有k个组内成员,后跟着k个成员的组内编号。让你求出有多少学生受到了感染。

题解:并查集板子题。就是计数那里要注意。

代码:

#include
#include
using namespace std;
const int maxn = ;

int f[maxn];

void init(int n){
for(int i = ; i < n ;i++){
f[i] = i;
}
}

int find(int x){
if(x == f[x])
return x;
return f[x] = find(f[x]);
}

void join(int a,int b){
a = find(a);
b = find(b);
if(a != b){
f[a] = b;
}
}

int a[maxn];
int main(){
int n,m,k;
while(cin>>n>>m){
if(n == && m == ){
break;
}
init(n);
for(int i = ; i < m; i++){ cin>>k;
cin>>a[];
for(int j = ; j < k ;j++){ cin>>a[j];
join(a[],a[j]);
}
}
int cnt = ;
for(int i = ;i < n; i++){
if(find(i) == f[]) //point
cnt++;
}
cout<<cnt<<endl;
}

 return ;  

}

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章