文章

3

粉丝

181

获赞

1

访问

23.6k

头像
并查集模板题
P1319 浙江大学机试题
发布于2021年4月22日 17:42
阅读数 8.0k

#include<iostream>
#include<string>
#include<algorithm>
#include<vector>

using namespace std;

const int MAXN = 1e3+3;



int father[MAXN];
int find(int x){
    return x==father[x]?x:(father[x]=find(father[x]));
}

void init(int N){
    for(int i=1;i<=N;i++){
        father[i] = i;
    }
}


int main(){
    int N,M;
    while(cin>>N>>M){
        if(N==0)
            break;
        init(N);
        int a,b;
        int cnt = 0;
        for(int i=0;i<M;i++){
            cin>>a>>b;
            a = find(a);
            b = find(b);
            if(a!=b){
                cnt++;
                father[a] = b;
            } 
        }
        cout<<N-1-cnt<<endl;
    }
    return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发