zoukankan      html  css  js  c++  java
  • POJ1161(并查集)

    1、题目链接地址

      http://poj.org/problem?id=1161

    2、源代码

    #include <iostream>
    using namespace std;
    int parent[30001];
    int suspect[30001];
     
    int find(int x)
    {
       if(parent[x] == x)
       {
          return x;
       }
       else
       {
          return parent[x] = find(parent[x]);
       }
    }
     
    void Union(int a, int b)
    {
       int x = find(a);
       int y = find(b);
       if(x == y)
       {
          return;
       }
       parent[y] = x;
       suspect[x] = suspect[x] + suspect[y];
    }
     
    int main()
    {
       int m, n;
       int a, b, c;
       int x;
       int i;
       while(cin >> m >> n)
       {
          if(m == 0 && n == 0)
          {
              break;
          }
          
          for(i = 0; i <= m; i++)
          {
            parent[i] = i;
            suspect[i] = 1;
          }
          
          while(n--)
          {
            cin >> a >> b;
            a--;
            while(a--)
            {
               cin >> c ;
               if(find(c) != find(b))
               {
                   Union(c, b);
               }
            }
          }
     
          cout << suspect[find(0)] << endl;
       }
       return 0;
    }
    作者:BestNow
    出处:http://www.cnblogs.com/BestNow/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    NSURLSession 网络请求
    NSData 数据
    NSStream文件流
    NSFileManager文件管理
    NSCache 缓存
    NSUserDefaults数据存储
    NSKeyedArchiver数据归档
    子线程定时器的创建
    NSEnumerator迭代器
    NSDate 时间
  • 原文地址:https://www.cnblogs.com/tianxue/p/3917018.html
Copyright © 2011-2022 走看看