POJ 1611

POJ 1611

题意

有n个人参加了m个社团,同一个社团互相接触的人有感染非典的概率,已知0号同学是疑似病例,求总的疑似病例的人数。

思路

求并查集。

#include 
#include 

using namespace std;

const int MAXN = 300001;
int pre[MAXN];
int n,m;
int find(int i){
    int j = i,temp;
    while(pre[i] != i)
        i = pre[i];
    while(j != i){
        temp = pre[i];
        pre[j] = i;
        j = temp;
    }
    return i;
}

void merge(int b,int c){
    int t1 = find(b);
    int t2 = find(c);
    if (t2 != t1){
        pre[t2] = t1;
    }
    return;
}

int main(){
    int i,j,k,c,d,sum;
    while((scanf("%d%d",&n,&m)==2)&&(n||m)){
        for(i = 0; i

你可能感兴趣的:(POJ 1611)