zoukankan      html  css  js  c++  java
  • hdu1272 小希的迷宫 并查集

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272

    题目就是判断是否连通图及是否存在回路

    简单的并查集

    两两合并,如果存在同一个集合,则No

    如果不是一个连通图 则No

    否则 Yes

    代码:

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstdlib>
     4 #include<cstring>
     5 using namespace std;
     6 int parent[100100];
     7 bool flag;
     8 int num[100100];
     9 int Find(int x)
    10 {
    11    int s;
    12    for(s=x;parent[s]>=0;s=parent[s]);
    13    return s;
    14 }
    15 void Union(int r1,int r2)
    16 {
    17     if(flag) return ;
    18    int R1=Find(r1);
    19    int R2=Find(r2);
    20    if(R1!=R2) {
    21            parent[R1]=R2;
    22            return ;
    23    }
    24    if(R1==R2)
    25       flag=1;
    26 
    27    
    28 }
    29 int main()
    30 {
    31     int u,v;
    32     int tol;
    33     int block;
    34     while(scanf("%d%d",&u,&v)!=EOF)
    35     {
    36       flag=0;
    37       block=0;
    38       memset(parent,-1,sizeof(parent));
    39       memset(num,0,sizeof(num));
    40       if(u==-1 && v==-1 ) break;
    41       if(u==0 && v==0) 
    42               {
    43                       cout<<"Yes"<<endl;
    44                       continue;
    45               }
    46        Union(u,v);
    47        num[u]++;
    48        num[v]++;
    49        while(scanf("%d%d",&u,&v)!=EOF)
    50        {
    51                if(u==0 && v==0) break;
    52                Union(u,v);
    53                num[u]++;
    54                num[v]++;
    55        }
    56       for(int i=1;i<=100000;i++)
    57               if(parent[i]==-1 && num[i]>0) block++;
    58       if(block>1)
    59        cout<<"No"<<endl;
    60       else
    61          if(flag) cout<<"No"<<endl;
    62          else
    63           cout<<"Yes"<<endl;
    64     }
    65     return 0;
    66 }
  • 相关阅读:
    SSH
    List Map Set
    oracle中的in和exsit比较
    Hibernate n+1问题
    单例模式。
    把一段逗号分割的字符串转换成一个数组
    Hibernate总结
    myeclipse安装svn插件的多种方式
    LeetCode 14 Longest Common Prefix
    LeetCode 13 Roman to Integer
  • 原文地址:https://www.cnblogs.com/xiaozhuyang/p/hdu1272.html
Copyright © 2011-2022 走看看