hdoj1213

一道簡單的並查集題目hdoj1212

#include<iostream>
using namespace std;
int T,N,M;
int father[2000];

void initial(int n){         //初始化數組
    for(int i=1;i<=n;i++)
        father[i] = i;
}

int find(int x){    //查找函數
    if(father[x] == x) return x;
    return father[x] = find(father[x]);
}

void UNION(int x,int y){    //合併
    int fx = find(x);
    int fy = find(y);
    if(fx!=fy){
        N--;
        father[fy] = fx;
    }
}

int main(){
    int i,a,b;
    cin>>T;
    while(T--){
        cin>>N>>M;
        initial(N);
        for(i=0;i<M;i++){
            cin>>a>>b;
            UNION(a,b);
        }
        cout<<N<<endl;
    }
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章