HDU1272小希的迷宫–并查集
整个文件以两个-1结尾。
Output对于输入的每一组数据,输出仅包括一行。如果该迷宫符合小希的思路,那么输出"Yes",否则输出"No"。
Sample Input
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 3 8 6 8 6 4
5 3 5 6 5 2 0 0 -1 -1
Sample Output
Yes
Yes
No 这道题并不难,可是我先是for循环中没有用i,又买看清人家是Yes不是YES结果怎么提交就是不对,桑心啊。
这道题用并查集,每输入两个点 就进行合并,但在这之前需要查看两个点的根节点是否相同,如果相同那肯定是不行的了,如果根节点相同,表示两个点连通(互相可达),之后再计算一下有几个根节点,用count记录,如果count大于1,表示有多个连通分支,则是不对的。哦对,别忘了单独输入0 0,也是满足的,也不存在回路。 代码:
#include <iostream>
using namespace std;
int a,b,f[],vis[],flag,maxi,mini,count;
void init()
{
for(int i=;i<=;i++)
f[i]=i,vis[i]=;
}
int getf(int a)
{
if(f[a]==a)return a;
else f[a]=getf(f[a]);
return f[a];
}
int merge(int a,int b)
{
vis[a]=;
vis[b]=;
if(maxi<a)maxi=a;
if(maxi<b)maxi=b;
if(mini>a)mini=a;
if(mini>b)mini=b;
int aa,bb;
aa=getf(a),bb=getf(b);
if(aa==bb)return ;
else f[bb]=aa;
return ;
}
int main()
{
while(cin>>a>>b)
{
if(a==-&&b==-)break;
if(!a&&!b){cout<<"Yes"<<endl;continue;}
init();
flag=;
count=;
mini=;
maxi=-;
if(merge(a,b)==)flag=;
while(cin>>a>>b&&(a+b))
{
if(merge(a,b)==)flag=;
}
for(int i=mini;i<=maxi;i++)
if(vis[i]&&f[i]==i)count++;
if(count!=)flag=;
if(flag)cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
}
HDU1272小希的迷宫–并查集的更多相关文章
- hdu1272 小希的迷宫(并查集)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272 题目: 小希的迷宫 Time Limit: 2000/1000 MS (Java/Others) ...
- hdu-1272 小希的迷宫---并查集或者DFS
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1272 题目大意: Problem Description 上次Gardon的迷宫城堡小希玩了很久(见 ...
- HDU-1272小希的迷宫,并查集?其实不用并查集;
小希的迷宫 ...
- HDU1272 小希的迷宫 并查集
参考网址:http://blog.sina.com.cn/s/blog_6827ac4a0100nyjy.html 解题思路: 由于这里出现的数字不一定连续的数字都会出现,所以设一个mark来标记数字 ...
- hdu1272小希的迷宫(并查集判断回路和是否连通)
传送门 迷宫中不能有回路,还要连通 如果最后集合数是一个那就是连通,否则不联通 要合并的两个顶点在相同集合内,表示出现了回路 输入时注意一下 #include<bits/stdc++.h> ...
- HDU 1272 小希的迷宫 并查集
小希的迷宫 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- hdu 1257 小希的迷宫 并查集
小希的迷宫 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1272 D ...
- <hdu - 1272> 小希的迷宫 并查集问题 (注意特殊情况)
本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272 Problem Description: 上次Gardon的迷宫城堡小希玩了很久(见Probl ...
- TZOJ 2648 小希的迷宫(并查集)
描述 上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一个通道 ...
随机推荐
- swap分区不足ubuntu休眠
安装uswsusp Ubuntu gnu/linux只需 代码: sudo aptitude install uswsusp Arch gnu/linux系统 代码: sudo pacman -S u ...
- MAVEN 自定义骨架
1)根据原由的骨架先创建出一个骨架模板,例如创建一个web框架可以先通过命令 mvn archetype:generate -DarchetypeCatalog=internal 创建出一个web的 ...
- linux 定时任务 日志记录
1 不记录日志 > /dev/null 2>&1 2 日志记录追加到指定文件 >> /path/mylog.log 2>&1
- java⑧
1.switch的表达式取值: byte short int char Enum(枚举) jdk1.7版本以上支持 String类型 2. break: 01.代表跳出当前方法体!跳出 ...
- 深入理解java虚拟机---java虚拟机内存管理(五)
1.深入理解java虚拟机 总图: 1.线程共享区: 2.线程独占区: 1.程序计数器 理解为当前线程锁执行的字节码的行号指示器,程序计数器没有内存异常错误.
- 7.4 C++标准模板库(STL)的概念
参考:http://www.weixueyuan.net/view/6401.html 总结: 标准模板库为C++提供了完善的数据结构及算法. 标准模板库包括三部分:容器.算法和迭代器. 容器是对象 ...
- loadrunner请求json数据参数化问题
http://blog.sina.com.cn/s/blog_62079f620102vvx3.html
- SQL-22 统计各个部门对应员工涨幅的次数总和,给出部门编码dept_no、部门名称dept_name以及次数sum
题目描述 统计各个部门对应员工涨幅的次数总和,给出部门编码dept_no.部门名称dept_name以及次数sumCREATE TABLE `departments` (`dept_no` char( ...
- centos7 安装jdk8 bash脚本 并配置环境变量
#!/bin/bash #安装java脚本 if type -p java; then echo 'java已安装.' exit else echo '开始安装java...' wget --no-c ...
- codeforces983A(数学题)
A. Finite or not? time limit per test 1 second memory limit per test 256 megabytes input standard in ...