题目大意:输入一系列的点,判断这些点组成的图符不符合小希的思路(无环、连通)

解题思路:

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(小希的迷宫——并查集)的更多相关文章

  1. <hdu - 1272> 小希的迷宫 并查集问题 (注意特殊情况)

     本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272 Problem Description: 上次Gardon的迷宫城堡小希玩了很久(见Probl ...

  2. HDU 1272 小希的迷宫 并查集

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

  3. HDU - 1272 小希的迷宫 并查集判断无向环及连通问题 树的性质

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

  4. hdu 1257 小希的迷宫 并查集

    小希的迷宫 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1272 D ...

  5. HDU 1272小希的迷宫(裸并查集,要判断是否构成环,是否是连通图)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1272 小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    ...

  6. hdu 1272 小希的迷宫(并查集+最小生成树+队列)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272 小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)     ...

  7. hdu 1272 小希的迷宫 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272 第二条并查集,和畅通工程的解法类似.判断小希的迷宫不符合条件,即有回路.我的做法是,在合并两个集 ...

  8. hdu 1272 小希的迷宫(java实现)

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

  9. hdu 1272 小希的迷宫

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

随机推荐

  1. CheckBox的触发

    遇到的问题:当Checkbox选中时触发Checked事件,使界面处于状态1,但是页面状态2时也希望checkBox处于选中状态,但是直接修改它的IsChecked属性势必会触发他的Checked事件 ...

  2. Ubuntu安装配置Qt环境

    安装 QT4.8.6库+QT Creator 2.4.1 下载地址发布 QT4.8.6库  http://mirrors.hustunique.com/qt/official_releases/qt/ ...

  3. CAEmitterLayer实现粒子效果

    在iOS 5中,苹果引入了一个新的CALayer子类叫做CAEmitterLayer.CAEmitterLayer是一个高性能的粒子引擎,被用来创建实时例子动画如:烟雾,火,雨等等这些效果. CAEm ...

  4. ssh远程登录linux live系统

    要想ssh远程登录,须要准备两件事:配置同网段IP和开启SSH服务. 因为live系统没有IP,所以首先须要配置IP. 我的live系统是在虚拟机上启动的,宿主IP为192.168.230.1,liv ...

  5. 函数返回char* 的解决方案

    在C语言中,自动变量在堆栈中分配内存.当包含自动变量的函数或代码块退出时,它们所占用的内存便被回收,它们的内容肯定会被下一个所调用的函数覆盖.这一切取决于堆栈中先前的自动变量位于何处,活动函数声明了什 ...

  6. 初学Pexpect

    概述 Pexpect 是 Don Libes 的 Expect 语言的一个 Python 实现,是一个用来启动子程序,并使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的 Python 模块 ...

  7. Form( 表单) 组件

    本节课重点了解 EasyUI 中 Form(表单)组件的使用方法, 这个组件不依赖于任何组件.一. 加载方式表单组件只能在 JS 区域设置,首先定义一张表单.<form id="box ...

  8. js 判断微信浏览器(转)

    最近做很多HTML5的项目,很多页面会通过微信微博等SNS分享出去.在分享页面上提供公司APP的下载.但是在很多应用的浏览器中,点击下载链接无法下载应用.那么针对这些浏览器我们需要给用户提示从safa ...

  9. Swift 数组、字典

    import Foundation // 数组 var arr = [,2.3] var arr1 = [] print(arr) // 字典 var dict = ["] // 添加新项 ...

  10. C#字符串的比较

    Console.WriteLine("输入字符1"); string n1 = Console.ReadLine(); Console.WriteLine("输入字符2& ...