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

解题思路:

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. android后台截屏实现(3)--编译screencap

    修改好之后就要编译了,screencap的编译是要在源码环境中进行的. 将修改后的screencap.cpp文件替换源码中的原始文件,然后修改screencap的Android.mk文件,修改后的文件 ...

  2. int与Integer

    int 是基本类型,直接存数值 integer是对象,用一个引用指向这个对象 1.Java 中的数据类型分为基本数据类型和复杂数据类型 int 是前者>>integer 是后者(也就是一个 ...

  3. C#委托与事件之观察者Observer设计模式

    前言    委托: 委托是一种在对象里保存方法引用的类型,同时也是一种类型安全的函数指针. 或委托可以看成一种表示函数的数据类型,类似函数指针. 事件是特殊的委托 观察者模式:两种角色:(1)Subj ...

  4. 差别client、offset、scroll系列以及event的几个距离属性

    element元素结点属性 一. offset系列 1.offsetWidth 和offsetHeight element.offsetWidth是一个仅仅读属性,它包含了: css width + ...

  5. [Angular 2] Transclusion in Angular 2

    Link: Blog Single transclude: <ng-content></ng-content> Multi-translcude: <ng-content ...

  6. cocos2d-x CCAction(转载)

    接触开发2d后,越来越多的用到动作的内容,看到一篇关于动作比较完整的文章,最主要的是动作的类图,从类图可以更加的理解各个类之间的继承的关系,以及使用更容易的去应用 . 文章有一些方法已经被修改了,现在 ...

  7. HID 报告描述符精细说明.

    1,报告描述符概述    1.1) 报表描述符        报表描述符和USB的其他描述符是不一样的,它不是一个简单的表格,报表描述符是USB所有描述符中最复杂的.报表描述符非常复杂而有弹性,因为它 ...

  8. Linux内核ROP学习

    0x00 前言 1.SMEP(Supervisor Mode Execution Protection):一种减缓内核利用的cpu策略,禁止内核态到用户态内存页的代码执行(32位的addresses ...

  9. swift和oc混编

    请参考这篇博客:点击查看

  10. php连接mysql的一些方法总结

    为了能让PHP连接MSSQL,系统需要安装MSSQL,PHP,且在PHP.ini中的配置中,将       ;extension=php_mssql.dll前面的;去掉 1.连接MSSQL       ...