zoukankan      html  css  js  c++  java
  • HDU_1232 畅通工程(并查集)

      

    #include <iostream>
    #include
    <cstdio>
    #include
    <cstring>
    #pragma comment(linker,"/STACK:655360000");

    using namespace std;

    const int N = 1002;
    int f[N], rank[N];

    int find(int x)
    {
    int k, r, j;
    r
    = x;
    while(r != f[r])
    {
    r
    = f[r];
    }
    k
    = x;
    while(k != r)
    {
    j
    = f[k];
    f[k]
    = r;
    k
    = j;
    }
    return r;
    }

    void union_set(int a, int b)
    {
    int x = find(a);
    int y = find(b);
    if(x == y) return;
    if(rank[x] > rank[y]) f[y] = x;
    else
    {
    f[x]
    = y;
    if(rank[x] == rank[y]) rank[y]++;
    }
    }
    int main()
    {
    //freopen("data.in", "r", stdin);

    int n, m, i, a, b;
    while(scanf("%d", &n) != EOF)
    {
    if(n == 0) break;
    scanf(
    "%d", &m);
    if(m == 0)
    {
    printf(
    "%d\n", n-1);
    continue;
    }
    for(i = 1;i <= n; i++)
    {
    f[i]
    = i;
    rank[i]
    = 0;
    }
    while(m--)
    {
    cin
    >> a >> b;
    union_set(a, b);
    }

    int cnt = 0;
    for(i = 1; i <=n; i++)
    {
    if(find(i) == i) //开始写成f[i] == i了,悲剧啊!!!
    cnt++;
    }
    printf(
    "%d\n", cnt-1);
    }
    return 0;
    }
  • 相关阅读:
    SciPy
    时间序列
    bytes 与 str 转换
    tensorflow
    Python3+Cuda+Cudnn+GPU
    TensorFlow models
    saltstack
    docker
    分布式文件系统
    创建RHCS集群环境 创建高可用Apache服务
  • 原文地址:https://www.cnblogs.com/vongang/p/2168530.html
Copyright © 2011-2022 走看看