ACM学习历程—HDU 1272 小希的迷宫(并查集)
Description
Input
整个文件以两个-1结尾。
Output
Sample Input
Sample Output
就是并查集,形成环路的只需要判断是否有相同的根,通过set集合得到点的数目,然后与合并次数相减,如果不是1,说明是森林。
这里使用递归压缩路径会爆栈,需要使用非递归的。
此外,对于0 0这组没有意义的数,需要输出Yes。。。。。
代码:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <set>
#include <map>
#include <queue>
#include <string>
#include <algorithm>
#define LL long long using namespace std; bool ans;
int ufs[], num;
set<int> s; /*
int findRoot(int x)
{
int fa = ufs[x];
if (fa == 0)
return x;
ufs[x] = findRoot(fa);
return ufs[x];
}
*/ int findRoot(int x)
{
int pre, now, rx;
rx = x;
while(ufs[rx] != )
rx = ufs[rx];
pre = x;
while(pre != rx)
{
now = ufs[pre];
ufs[pre] = rx;
pre = now;
}
return rx;
} bool mergeUfs(int x, int y)
{
int rx, ry;
rx = findRoot(x);
ry = findRoot(y);
if (rx == ry)
return false;
num++;
ufs[rx] = ry;
return true;
} bool input()
{
ans = true;
num = ;
s.clear();
memset(ufs, , sizeof(ufs));
int u, v;
for (;;)
{
scanf("%d%d", &u, &v);
if (u == - && v == -)
return false;
if (u == && v == )
break;
s.insert(u);
s.insert(v);
if (ans && !mergeUfs(u, v))
ans = false;
}
return true;
} void output()
{
if (s.size() && (!ans || s.size()-num != ))
printf("No\n");
else
printf("Yes\n");
} int main()
{
//freopen("test.in", "r", stdin);
while (input())
{
output();
}
return ;
}
ACM学习历程—HDU 1272 小希的迷宫(并查集)的更多相关文章
- <hdu - 1272> 小希的迷宫 并查集问题 (注意特殊情况)
本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272 Problem Description: 上次Gardon的迷宫城堡小希玩了很久(见Probl ...
- HDU 1272 小希的迷宫 并查集
小希的迷宫 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- HDU - 1272 小希的迷宫 并查集判断无向环及连通问题 树的性质
小希的迷宫 上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一 ...
- (step5.1.6)hdu 1272(小希的迷宫——并查集)
题目大意:输入一系列的点,判断这些点组成的图符不符合小希的思路(无环.连通) 解题思路: 1)如果两个节点的根节点相同,那么在这两个节点之间添加1条边以后,这个图肯定有环路. 2)孤立节点:被使用过& ...
- hdu 1257 小希的迷宫 并查集
小希的迷宫 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1272 D ...
- ACM学习历程—SNNUOJ 1110 传输网络((并查集 && 离线) || (线段树 && 时间戳))(2015陕西省大学生程序设计竞赛D题)
Description Byteland国家的网络单向传输系统可以被看成是以首都 Bytetown为中心的有向树,一开始只有Bytetown建有基站,所有其他城市的信号都是从Bytetown传输过来的 ...
- HDU 1272小希的迷宫(裸并查集,要判断是否构成环,是否是连通图)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1272 小希的迷宫 Time Limit: 2000/1000 MS (Java/Others) ...
- hdu 1272 小希的迷宫(并查集+最小生成树+队列)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272 小希的迷宫 Time Limit: 2000/1000 MS (Java/Others) ...
- hdu 1272 小希的迷宫 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272 第二条并查集,和畅通工程的解法类似.判断小希的迷宫不符合条件,即有回路.我的做法是,在合并两个集 ...
随机推荐
- C 语言学习 3
[程序3] 题目:一个整数,它加上100后是一个全然平方数.再加上168又是一个全然平方数.请问该数是多少? 1.程序分析:在10万以内推断.先将该数加上100后再开方,再将该数加上268后再开方,假 ...
- Spring Boot从入门到实战:整合Web项目常用功能
在Web应用开发过程中,一般都涵盖一些常用功能的实现,如数据库访问.异常处理.消息队列.缓存服务.OSS服务,以及接口日志配置,接口文档生成等.如果每个项目都来一套,则既费力又难以维护.可以通过Spr ...
- Iconfot阿里妈妈-css高级应用
矢量图标替换教程 首先进入:http://www.iconfont.cn/ 搜索你分类的关键字---然后加入购物车 加入购物车之后,下载到本地用浏览器打开demo.html 把a class=“原来样 ...
- 【转】2018年EI收录中文期刊目录
序号 中文刊名 收录情况 1 声学学报 保持收录 2 航空学报 保持收录 3 兵工学报 保持收录 4 自动化学报 保持收录 5 电子学报 保持收录 6 太阳能学报 保持收录 7 测绘学报 保持收录 8 ...
- A和B是好友,他们经常在空闲时间聊天,A的空闲时间为[a1 ,b1 ],[a2 ,b2 ]..[ap ,bp ]。B的空闲时间是[c1 +t,d1 +t]..[cq +t,dq +t],这里t为B的起床时间。这些时间包括了边界点。B的起床时间为[l,r]的一个时刻。若一个起床时间能使两人在任意时刻聊天,那么这个时间就是合适的,问有多少个合适的起床时间?
// ConsoleApplication5.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<vector> ...
- 创业做移动互联网App的4个注意事项
导语:大多数人对于做App还是比較盲目,有个想法立刻就去做了.做出来了才忽然想到市场和推广.我把做移动 互联网App注意事项情给大家列下. 文| 移动互联网李建华 近 来,常常有人问我关于推广的事情, ...
- eclipse集成tomcat改动字符集參数
问题: 在eclipse 4.4(Luna)中集成tomcat时,直接改动原tomcat文件夹中的配置文件,不起作用. 有时.我们会修改字符集參数为utf-8,以解决中文乱码问题,修改之后依旧乱码-- ...
- sigar 监控服务器硬件信息
转载 http://www.cnblogs.com/jifeng/archive/2012/05/16/2503519.html 通过使用第三方开源jar包sigar.jar我们可以获得本地的信息 1 ...
- 【BZOJ3601】一个人的数论 高斯消元+莫比乌斯反演
[BZOJ3601]一个人的数论 题解:本题的做法还是很神的~ 那么g(n)如何求呢?显然它的常数项=0,我们可以用待定系数法,将n=1...d+1的情况代入式子中解方程,有d+1个方程和d+1个未知 ...
- Eclipse打jar包的方法
1.准备主清单文件 “MANIFEST.MF” Manifest-Version: 1.0 Class-Path: lib/commons-codec.jar lib/commons-httpclie ...