hdu 1272 小希的迷宫(判断成环)

原创 2015年11月17日 23:31:31

题目链接: hdu 1272 小希的迷宫

题意:若整个无向图连通,并且不成环,则输出Yes,否则输出No

判断成环:

若两个点的祖宗相同,并且这两个点相连,则说明成环

整个无向图连通,表明只有一个根节点

#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 111111
using namespace std;
int father[maxn];
int Find(int x)
{
    if(father[x]==x) return x;
    father[x]=Find(father[x]);
    return father[x];
}
int Merge(int x,int y)
{
    x=Find(x);
    y=Find(y);
    if(x!=y) father[x]=y;
}
bool same(int x,int y)//判断是否成环
{
    return Find(x)==Find(y)?1:0;
}
int main()
{
  int x,y,flag = 0,Max=-1;
  while(scanf("%d%d",&x,&y))
  {
      Max=-1;//Max用来记录最大的那个数
      if(x==-1&&y==-1) break;
      if(x==0&&y==0)//大坑点,输入0,0时输出要是Yes
      {
          printf("Yes\n");
          continue;
      }
      flag = 0;
      memset(father,0,sizeof(father));//因为不知道哪些数有用,所以一开始不能初始化为本身
      do
      {
          if(!father[x]) father[x]=x;//输入的数即为有用的数,若该数的父亲为零,则表示以前没访问过,则初始化为它的本身
          if(!father[y]) father[y]=y;
          int Max1=max(x,y);
          Max=max(Max,Max1);//不断找最大值
          if(!same(x,y)) Merge(x,y);//若不是共同的祖先, 则合并
          else flag =1;//否则制标记为1
          scanf("%d%d",&x,&y);
      }while(x&&y);
      int sum=0;
      for(int i=1;i<=Max;i++)
        if(father[i]==i) sum++;
      if(sum!=1) flag =1;//若要全部连通,则根只有一个
     // cout<<sum<<endl;
      if(flag) printf("No\n");
      else printf("Yes\n");
  }
  return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

HDU 1272 小希的迷宫(并查集,判断是否成环)

小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm...

hdu1272——小希的迷宫(并查集+判断环)

Problem Description 上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走。但是她设计迷宫的思路不一样,首先她认为所有的通道都应...

HDU - 1272 小希的迷宫(并查集判断无向环)

点击打开题目链接 小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768...

HDU:1272 小希的迷宫(并查集+无向图成树判断)

小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su...
  • zugofn
  • zugofn
  • 2016年08月01日 20:36
  • 223

hdu1272小希的迷宫(并查集--判断是否有环的存在)

1.题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1272   2.思路:    并查集判断连通性,要注意0 0这数据的结果是Yes,还有边数...

HDU1272 - 小希的迷宫 并查集检测无向图的环

HDU1272 - 小希的迷宫 利用并查集检测无向图的环

HDU1272 小希的迷宫 并查集判环

1.题目描述: 小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe...

HDU 1272 小希的迷宫(并查集:判断连通且结构为树)

HDU 1272 小希的迷宫 上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走。但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通...

hdu1272小希的迷宫 并查集判断图中是否有回路

小希的迷宫Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis...

HDU - 1272 小希的迷宫 并查集集合数判断

上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走。但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一个通道连通了...
  • hao_994
  • hao_994
  • 2017年07月20日 10:40
  • 90
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hdu 1272 小希的迷宫(判断成环)
举报原因:
原因补充:

(最多只允许输入30个字)