• HDOJ 2120 并查集


    并查集的应用,用来查找被分割的区域个数。

    即当两个节点值相同时说明已经为了一个圈,否则不可能,此时区域个数加1.

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 using namespace std;
     5 const int maxn=1010;
     6 int n,m;
     7 int root[maxn];
     8 
     9 int find(int a){
    10     while(root[a]!=a){
    11         a=root[a];
    12     }
    13     return a;
    14 }
    15 
    16 int main(){
    17     while(EOF != scanf("%d%d",&n,&m)){
    18         for(int i=0;i<n;i++){
    19             root[i]=i;
    20         }
    21         int ans = 0;
    22         int a,b;
    23         while(m--){
    24             scanf("%d%d",&a,&b);
    25             int ra=find(a);
    26             int rb=find(b);
    27             if(ra == rb)
    28                 ans++;
    29             else
    30                 root[ra]=rb;//epual to Join
    31             //printf("%d %d %d
    ",ra,rb,ans);
    32         }
    33         printf("%d
    ",ans);
    34     }
    35     return 0;
    36 }

    Ice_cream's world I

    Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other)
    Total Submission(s) : 3   Accepted Submission(s) : 2

    Font: Times New Roman | Verdana | Georgia

    Font Size:

    Problem Description

    ice_cream's world is a rich country, it has many fertile lands. Today, the queen of ice_cream wants award land to diligent ACMers. So there are some watchtowers are set up, and wall between watchtowers be build, in order to partition the ice_cream’s world. But how many ACMers at most can be awarded by the queen is a big problem. One wall-surrounded land must be given to only one ACMer and no walls are crossed, if you can help the queen solve this problem, you will be get a land.

    Input

    In the case, first two integers N, M (N<=1000, M<=10000) is represent the number of watchtower and the number of wall. The watchtower numbered from 0 to N-1. Next following M lines, every line contain two integers A, B mean between A and B has a wall(A and B are distinct). Terminate by end of file.

    Output

    Output the maximum number of ACMers who will be awarded.
    One answer one line.

    Sample Input

    8 10
    0 1
    1 2
    1 3
    2 4
    3 4
    0 5
    5 6
    6 7
    3 6
    4 7

    Sample Output

    3
  • 相关阅读:
    ES6中的find与filter的区别
    centos7上搭建http服务器以及设置目录访问
    JSON.parse()和JSON.stringify()的用法
    video 在iphone手机的ios系统和微信端无法自动播放
    JavaScript规范----DOM操作
    http与https的区别
    vw vh 的概念
    JS实现数组排序:升序和降序
    用Vue来实现音乐播放器(二十三):音乐列表
    JavaScript对象---递归遍历对象
  • 原文地址:https://www.cnblogs.com/wushuaiyi/p/3647206.html
Copyright © 2020-2023  润新知