HDOJ 1232 畅通工程

来源:互联网 发布:qq空间淘宝应用可信吗 编辑:程序博客网 时间:2024/05/01 17:51

~~~题目链接~~~


code:

#include <stdio.h>#define N 1002int n = 0, m = 0, r[N], f[N];void init(int n){    for(int i = 0; i<=n; i++)    {        r[i] = 0;        f[i] = i;    }}int find(int x){    if(f[x] != x)        f[x] = find(f[x]);    return f[x];}void Union(int x, int y){    if(r[x]<r[y])        f[x] = y;    else    {        if(r[x] == r[y])            r[x]++;        f[y] = x;    }}int judge(){    int i = 0, cnt = 0;    for(i = 1; i<=n; i++)        if(f[i] == i) cnt++;    return cnt-1;}int main(){    int a = 0, b = 0, fx = 0, fy = 0;    while(scanf("%d", &n), n)    {        init(n);        scanf("%d", &m);        while(m--)        {            scanf("%d %d", &a, &b);            fx = find(a), fy = find(b);            if(fx == fy) continue;            else Union(fx, fy);        }        printf("%d\n", judge());    }    return 0;}


原创粉丝点击