HDU 1232 并查集裸题

来源:互联网 发布:matlab c 混合编程 编辑:程序博客网 时间:2024/06/08 14:34
#include<iostream>#include<cstdio>using namespace std;int N,M;int father[1005];int find(int x){    if(x == father[x]) return x;    else return father[x] = find(father[x]);}int main(){    while(scanf("%d",&N) != EOF){        if(N == 0) break;        scanf("%d",&M);        for(int i = 1;i <= N;++i) father[i] = i;        int x,y;        int ans = N-1;        for(int i = 0;i < M;++i){            scanf("%d%d",&x,&y);            if(find(x) == find(y)) continue;            ans --;            father[find(x)] = find(y);        }        printf("%d\n",ans);    }    return 0;}

0 0
原创粉丝点击