暢通工程

#include<stdio.h>
const int MAXN=101;
int F[MAXN];
int find(int t) {
    if (F[t]==-1) return t;
    return F[t]=find(F[t]);
}
void bring (int a, int b) {
    int t1=find(a);
    int t2= find(b);
    if (t1!=t2)  F[t1]=t2;
}
int main() {
    int n,m;
    while (scanf("%d",&n),n) {
        scanf("%d",&m);
        for (int i=1; i<=n; i++)  F[i]=-1;
        int a,b;
        while(m--) {
            scanf("%d%d",&a, &b) ;
            bring(a,b);
        }
        int res=0;
        for (int i=1; i<=n; i++)
            if (F[i]==-1) res++;
        printf("%d\n",res-1);
    }
    return 0;
}

發佈了46 篇原創文章 · 獲贊 2 · 訪問量 8072
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章