题意不说了,是中文。

思路就是并查集,也不用说了。

难点1、判断条件:两个数不能有相同的根;还有就是有且只有一个根。

难点2、当直接输入0,0,时输出Yes。

WA过好多遍,之后重新整理思路,重写一遍就A了,如果细节上没处理好一直WA,不妨试试重写,这是忠告,适合每道题。

我的测试数据::

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

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

6 8  5 3  5 2  6 4  5 6  0 0

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

6 8  5 3  5 2  6 4  5 6  3 8  0 0

1 2 2 1 0 0

1 2 1 3 4 5 4 6 0 0

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

-1 -1

A的代码:::

#include<stdio.h>
#include<string.h>
#define max 100010
int father[max];
int mark[max],num[max];
int maxnum,minnum;
int n[max],m[max];
void init()
{
int k;
for(k=minnum;k<=maxnum;k++)
{
father[k]=k;num[k]=1;
}
}
int find(int son)
{
if(father[son]!=son)
{
father[son]=find(father[son]);
}
return father[son];
}
int main()
{
int i,j,fn,fm,cir;
while(scanf("%d%d",&n[0],&m[0])!=EOF)
{
maxnum=0;minnum=max;memset(mark,0,sizeof(mark));

if(n[0]==-1&&m[0]==-1) break;
else if(n[0]==0&&m[0]==0)
{
printf("Yes\n");
continue;
}
mark[n[0]]=1;mark[m[0]]=1;
i=1;
while(scanf("%d%d",&n[i],&m[i]))
{
if(n[i]==0&&m[i]==0) break;
mark[n[i]]=1;mark[m[i]]=1;
i++;
}  //输入

for(j=0;j<i;j++)
{
if(maxnum<n[j]) maxnum=n[j];
if(minnum>n[j]) minnum=n[j];
if(maxnum<m[j]) maxnum=m[j];
if(minnum>m[j]) minnum=m[j];
}//最大和最小

init();cir=0;//初始化

for(j=0;j<i;j++)
{
fn=find(n[j]);
fm=find(m[j]);
if(fn==fm)
{
cir=1;break;
}
if(num[fn]==num[fm])   //A掉之后考虑过如果不用num计数会怎么样,结果是爆栈,只是我的方法适合这样吧。 
{
if(fn>fm)
{
num[fn]+=num[fm];father[fm]=fn;
}
else
{
num[fm]+=num[fn];father[fn]=fm;
}
}
else
{
if(num[fn]>num[fm])
{
num[fn]+=num[fm];father[fm]=fn;
}
else
{
num[fm]+=num[fn];father[fn]=fm;
}
}
}//找祖宗合并 
if(cir==1)  //看是否成环,如果成环,cir==1 
{
printf("No\n");
continue;
}
for(i=minnum;i<=maxnum;i++)//判断几棵树 
{
if(i==father[i]&&mark[i]==1) {cir++;}//为了少定义变量,所以还用cir,因为如果没成环,cir还是等于0的, 
}
if(cir==1) printf("Yes\n");//只有一棵树就对了 
else printf("No\n");
}
return 0;
}

bhu1272小希的迷宫相关推荐

  1. 杭电 1272 poj 1308 小希的迷宫

    这道题是我学了并查集过后做的第三个题,教我们的学姐说这是并查集的基础题,所以有必要牢牢掌握. 下面就我做这道题的经验,给大家一些建议吧!当然,我的建议不是最好的,还请各位大神指出我的错误来,我也好改正 ...

  2. 小希的迷宫(并查集)

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

  3. HDU Problem 1272 小希的迷宫 【并查集】

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

  4. 并查集杭电1272小希的迷宫

    New~ 欢迎参加--计算机学院大学生程序设计竞赛(新生为主) 小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/ ...

  5. hdu 1272 小希的迷宫 (并查集)

    小希的迷宫                                                                          Time Limit: 2000/1000 ...

  6. HDOJ---1272 小希的迷宫[并查集]

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

  7. HDU——1272小希的迷宫(并查集+拓扑排序)

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

  8. HDU1272 小希的迷宫【并查集】

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

  9. HDU1272(小希的迷宫) 并查集

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

最新文章

  1. java中最常用jar包的用途说明,适合初学者
  2. [ python ] 类的组合
  3. 亚洲首获奖!清华大学团队获ACM SIGCOMM 2021唯一最佳学生论文奖
  4. Oracle E-Business Suite Maintenance Guide Release 12.2(Patching Utilities)
  5. MinGW下静态编译、链接Qt 5.0
  6. Linux apt-get install无法定位问题
  7. MVC + AJAX请求失败的问题
  8. Unity——用UnityEditor拷贝FBX中的AnimationClip
  9. 消息中间件系列(四):消息队列MQ的特点、选型、及应用场景详解
  10. LeetCode - 16. 3Sum Closest
  11. SCRUM 12.23
  12. kitti数据集介绍论文Vision meets Robotics: The KITTI Dataset
  13. python中的str()函数
  14. python多线程图片处理
  15. 逆透视变换与SIFT算法
  16. 创建一个员工信息管理界面,页面如下
  17. 计算机硬盘内存不足,电脑提示磁盘空间不足怎么办
  18. Excel将一列数据分隔成多列
  19. 银行家算法判断状态是否安全
  20. html网页游戏别踩白块,原生JS实现《别踩白块》游戏(兼容IE)

热门文章

  1. Word文档一行分别左右对齐
  2. 物联网设备和应用程序涉及协议的概述
  3. 国产机们的高端梦:OV保守、米耀激进
  4. 02 锁版本--通用模块--knife4j--profiles
  5. SPARQL查询语言概念及语法
  6. 网络机房搬迁的实施和经验
  7. 手把手教你如何推广博客网站
  8. 虚拟专用网的技术分析
  9. STM32CubeIDE HAL库IIC实现气压计MS5637的数据读取
  10. 【洛谷 P6151 [集训队作业2019] 青春猪头少年不会梦到兔女郎学姐】【容斥原理+生成函数】