zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    c#的运算符
    modbus-poll和modbus-slave工具的学习使用——modbus协议功能码1的解析
    modbus-poll和modbus-slave工具的学习使用——环境搭建
    STM32L4R9使用HAL库调试IIC注意事项
    蓝牙透传——介绍蓝牙最简单、最常见的通讯方式
    Chapter 2 Open Book——11
    Chapter 2 Open Book——10
    Chapter 2 Open Book——9
    线程中sleep方法和wait方法有什么区别?
    你所不知道的mybatis居然也有拦截器
  • 原文地址:https://www.cnblogs.com/wushuaiyi/p/3647206.html
Copyright © 2011-2022 走看看