(step5.1.6)hdu 1272(小希的迷宫——并查集)
题目大意:输入一系列的点,判断这些点组成的图符不符合小希的思路(无环、连通)
解题思路:
1)如果两个节点的根节点相同,那么在这两个节点之间添加1条边以后,这个图肯定有环路。
2)孤立节点:被使用过&&当前节点的父亲节点是自己
代码如下:
- /*
- * 1272_1.cpp
- *
- * Created on: 2013年8月23日
- * Author: Administrator
- */
- #include <iostream>
- using namespace std;
- /**
- * father[i] : 用来保存当前节点的父节点
- * flag[i] :判断当前节点是否使用过.
- * ok : 判断该迷宫是否满足小希的思路
- */
- int father[100005];//不要只开到100001,否则会WA
- bool flag[100005];
- bool ok;
- int find(int a) {
- if (a == father[a]) {
- return a;
- }
- father[a] = find(father[a]);
- return father[a];
- }
- void join(int x, int y) {
- int fx = find(x);
- int fy = find(y);
- /**
- * 如果两个节点n、m的根节点相同,
- * 那么在他们之间添加一条以后,这个图肯定出现了环路
- */
- if (fx != fy) {
- father[fx] = fy;
- } else {
- ok = false;
- }
- }
- void make_set() {
- int i;
- for (i = 1; i <= 100001; ++i) {
- father[i] = i;
- }
- }
- int main() {
- int n, m;
- while (scanf("%d%d", &n, &m) != EOF, n != -1) {
- if (n == 0) {
- printf("Yes\n");
- continue;
- }
- make_set();
- memset(flag, 0, sizeof(flag));
- flag[n] = true;
- flag[m] = true;
- ok = true;
- join(n, m);
- while (scanf("%d%d", &n, &m) != EOF, n != 0) {
- join(n, m);
- flag[n] = true;
- flag[m] = true;
- }
- int i;
- int count = 0;
- for (i = 1; i <= 100001; ++i) {
- /**
- * 如果当前节点被使用过&&当前节点的父亲节点是他自己,
- * 那么这个节点就是孤立节点(除了根节点)
- */
- if (flag[i] && father[i] == i) {
- count++;
- }
- }
- if (count > 1) {
- ok = false;
- }
- if (ok) {
- printf("Yes\n");
- } else {
- printf("No\n");
- }
- }
- }
(step5.1.6)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来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一 ...
- 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 小希的迷宫 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 第二条并查集,和畅通工程的解法类似.判断小希的迷宫不符合条件,即有回路.我的做法是,在合并两个集 ...
- hdu 1272 小希的迷宫(java实现)
小希的迷宫 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- hdu 1272 小希的迷宫
小希的迷宫 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
随机推荐
- iOS8及以后 地图定位当前城市
通过以下网址的步骤实现定位获取城市的功能 http://www.2cto.com/kf/201504/393312.html
- Color 颜色码-英文名称-十六进制-RGB对照表
色 英文代码 形像颜色 HEX格式 RGB格式 LightPink 浅粉红 #FFB6C1 255,182,193 Pink 粉红 #FFC0CB 255,192,203 Crimson 猩红 # ...
- nexus5 root教程
转载自: http://www.inexus.co/article-1280-1.html http://www.pc6.com/edu/71016.html https://download.cha ...
- 整型数组处理算法(八)插入(+、-、空格)完成的等式:1 2 3 4 5 6 7 8 9=N[华为面试题]
有一个未完成的等式:1 2 3 4 5 6 7 8 9=N 当给出整数N的具体值后,请你在2,3,4,5,6,7,8,9这8个数字的每一个前面,或插入运算符号“+”,或插入一个运算符号“-”,或不插入 ...
- C++中的static成员
C++中的static 成员永远是我心中的痛,记了好多次了,但是今天在项目中依然忘记了,今天写下来,方便以后不用再去Baidu.google搜索了. 在头文件中声明静态成员 static int i; ...
- Socket 理解
TCP/IP要想理解socket首先得熟悉一下TCP/IP协议族, TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协 ...
- js中this的指向
在js中this的指向对于新手来说一定是个难题,但是如果你真正理解了的话,也就没什么问题啦,下面就来讲讲this吧. JS中,this的值取决于调用的模式(调用对象),而JS中共有4种调用模式: 1. ...
- 关于解决方案和web文件夹放在同一目录路径错误的问题
今天公司要做个b2b商城,下了个源码,目的是在这个基础上改,可是源码没有解决方案,于是建立了个解决方案,然后添加网站,发现解决方案和web目录位于不同目录(解决方案总是自动生成一个目录),可是我从网上 ...
- 什么是 Terminal
从用户的角度来看,Terminal 是键盘和显示器的组合,也称为 TTY(电传打字机的缩写).键盘输入字符,显示器显示字符. 从进程的角度来看,终端是字符设备,可以通过 read.write.ioct ...
- Swift 循环、数组 字典的遍历
import Foundation // 数组声明 var arr = [String]() // 数组循环添加项 ...{ arr.append("Item \(index)") ...