• UVa 459


      题目大意:给你一个无向图的顶点和边集,让你求图中连通分量的个数。使用并查集解决。

     1 #include <cstdio>
     2 #include <cstring>
     3 #define MAXN 30
     4 
     5 bool G[MAXN][MAXN];
     6 int p[MAXN];
     7 
     8 int find(int x)
     9 {
    10     return x == p[x] ? x : p[x]=find(p[x]);
    11 }
    12 
    13 int main()
    14 {
    15 #ifdef LOCAL
    16     freopen("in", "r", stdin);
    17 #endif
    18     int T;
    19     scanf("%d", &T);
    20     getchar();
    21     char str[20];
    22     gets(str);
    23     while (T--)
    24     {
    25         memset(G, 0, sizeof(G));
    26         gets(str);
    27         int n = str[0] - 'A' + 1;
    28         for (int i = 0; i < n; i++)
    29             p[i] = i;
    30         int cnt = n;
    31         while (gets(str))
    32         {
    33             if (str[0] == 0)  break;
    34             int a = str[0] - 'A';
    35             int b = str[1] - 'A';
    36             int pa = find(a);
    37             int pb = find(b);
    38             if (pa != pb)
    39             {
    40                 p[pb] = pa;
    41                 cnt--;
    42             }
    43         }
    44         printf("%d
    ", cnt);
    45         if (T)  printf("
    ");
    46     }
    47     return 0;
    48 }
    View Code
  • 相关阅读:
    建立文件结构
    PCL类的设计结构
    如何编写新的PCL类
    PCL推荐的命名规范(2)
    PCL推荐的命名规范(1)
    PCL中异常处理机制
    如何增加新的PointT类型
    hdoj 1728 逃离迷宫
    ny710 外星人的供给站
    ny714 Card Trick
  • 原文地址:https://www.cnblogs.com/xiaobaibuhei/p/3294607.html
Copyright © 2020-2023  润新知