小希的迷宫(MST单棵树判断法则)
小希的迷宫
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 27851 Accepted Submission(s): 8613

整个文件以两个-1结尾。
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
Yes
No
首先学习到了两点:
判断一张图是否是一颗树的两个关键点:
- 不存在环路
- 满足边数加一等于顶点数的规律(不考虑重边和指向自身的边)
#include<stdio.h>
#include<set>
using namespace std;
set<int>S;
int main()
{
freopen ("a.txt" , "r" , stdin ) ;
int a,b;
while(scanf("%d%d",&a,&b)&&(a!=-||b!=-))
{
if(a==&&b==) printf("Yes\n");
int num=;
S.insert(a);
S.insert(b);
while(scanf("%d%d",&a,&b)&&(a||b))
{
S.insert(a);
S.insert(b);
num++;
}
printf ("\n") ;
if(S.size()-==num) printf("Yes\n");//满足边数加一等于顶点数的规律(不考虑重边和指向自身的边)
else printf("No\n");
S.clear();
}
return ;
}
((个人观点:其实只要满足 edges + 1 == points , 就能判断出:
1.只有一棵树;
2.且没有回路;
如果在已知只有一棵树是 , 那么用 kruskal 算法也能快速判断出是否有回路))
以上收回=。= ,bccn上的大神给了我饭粒 , 所以还是看转载的那部分吧(正解):
1 2
3 4
3 5
4 5
0 0
所以上面那个能够应该是数据不够强造成的吧:(加上kruskal算法即可)
#include<stdio.h>
#include<set>
#include<iostream>
using namespace std;
set<int>S ;
int a , b , m ;
struct edge
{
int u , v ;
}e[]; int f[] ; int find(int x )
{
return f[x] == x ? x : find (f[x]) ;
} void init ()
{
for (int i = ; i <= ; i++)
f[i] = i ;
} void kruskal ()
{
init () ;
int x , y ;
for (int i = ; i <= m ; i++) {
x = find(e[i].u) ;
y = find(e[i].v) ;
if ( x == y) {
puts ("No") ;
return ;
}
else {
f[x] = y ;
}
}
puts("Yes") ;
} int main ()
{
// freopen ("a.txt" , "r" , stdin ) ;
while ( ~ scanf ("%d%d" , &a , &b)) {
if (a == - && b == -)
break ;
if (a == && b == ) {
puts ("Yes") ;
continue ;
} m = ;
S.insert (a) ;e[m].u = a ;
S.insert (b) ;e[m].v = b ;
while ( scanf ("%d%d" , &a , &b) && a || b) {
m++ ;
S.insert (a) ; e[m].u = a ;
S.insert (b) ; e[m].v = b ;
}
// cout << m << endl ;
if ( S.size () != m + )
puts ("No") ;
else
kruskal () ;
S.clear ();
}
return ;
}
/*
1 2 3 4 3 5 4 5 0 0 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 2 3 4 0 0 -1 -1
*/
小希的迷宫(MST单棵树判断法则)的更多相关文章
- HDU - 1272 小希的迷宫 并查集判断无向环及连通问题 树的性质
小希的迷宫 上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一 ...
- HDU 1272小希的迷宫(裸并查集,要判断是否构成环,是否是连通图)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1272 小希的迷宫 Time Limit: 2000/1000 MS (Java/Others) ...
- SDUT 2129 树结构练习——判断给定森林中有多少棵树
树结构练习——判断给定森林中有多少棵树 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 众 ...
- 小希的迷宫(HDU 1272 并查集判断生成树)
小希的迷宫 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- [剑指Offer]判断一棵树为平衡二叉树(递归)
题目链接 https://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222?tpId=0&tqId=0&rp=2&a ...
- 判断一棵树是否为二叉搜索树(二叉排序树) python
输入一棵树,判断这棵树是否为二叉搜索树.首先要知道什么是排序二叉树,二叉排序树是这样定义的,二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的 ...
- [LeetCode]Subtree of Another Tree判断一棵树是不是另一棵树的子树
将树序列化为字符串,空节点用符号表示,这样可以唯一的表示一棵树. 用list记录所有子树的序列化,和目标树比较. List<String> list = new ArrayList< ...
- LeetCode——Same Tree(判断两棵树是否相同)
问题: Given two binary trees, write a function to check if they are equal or not. Two binary trees are ...
- hdoj 1272 小希的迷宫
上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一个通道连通了 ...
随机推荐
- [原创]Net实现Excel导入导出到数据库(附源码)
关于数据库导出到Excel和SQLServer数据导出到Excel的例子,在博客园有很多的例子,自己根据网上搜集资料,自己做了亦歌简单的demo,现在分享出来供初学者学习交流使用. 一.数据库导入导出 ...
- 图片ping、JSONP和CORS跨域
置顶文章:<纯CSS打造银色MacBook Air(完整版)> 上一篇:<由外边距合并到BFC> 作者主页:myvin 博主QQ:851399101(点击QQ和博主发起临时会话 ...
- Android杂谈--Activity、Window、View的关系
转自 http://www.cnblogs.com/loulijun/archive/2012/02/09/2344681.html Activity其实更像一个控制单元,控制window上显示的Vi ...
- MongoDB 2.6设置访问权限、设置用户
MongoDB已经使用很长一段时间了,基于MongoDB的数据存储也一直没有使用到权限访问(MongoDB默认设置为无权限访问限制),今天特地花了一点时间研究了一下,研究成果如下: 注:研究成果基于W ...
- hdu3397 线段树 成段更新
这题真的呵呵了.敲了很长时间,调了很多bug,把0 1 输出,解决了.最后想取反,怎么搞都有bug, 最后还是看了大牛们的博客.不过这题真的敲得爽,调bug时基本把线段树过程全部弄了一遍. #incl ...
- Java基础-四大特性理解(抽象、封装、继承、多态)
抽象: 象就是有点模糊的意思,还没确定好的意思. 就比方要定义一个方法和类.但还没确定怎么去实现它的具体一点的子方法,那我就可以用抽象类或接口.具体怎么用,要做什么,我不用关心,由使用的人自己去定义去 ...
- web开发(二十一)之自定义拦截器的使用
转自博客:http://blog.csdn.net/pkgk2013/article/details/51985817 拦截器的作用 拦截器,在AOP(Aspect-Oriented Programm ...
- 【CodeForces 602A】C - 特别水的题3-Two Bases
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=102271#problem/C Description After seeing the ...
- BZOJ-2929 洞穴攀岩 最大流Dinic(傻逼题)
竟然没有1A真羞耻...1分钟不到读完题,10分钟不到打完....MD没仔细看...WA了一遍,贱! 2929: [Poi1999]洞穴攀行 Time Limit: 1 Sec Memory Limi ...
- 在Ubuntu下安装*.sh
在Ubuntu下安装*.sh和*.bin的方法 [日期:2009-12-07] 来源:Linux公社 作者:Linux编辑 [字体:大 中 小] 记下在Ubuntu下安装*.sh和*.bin的简 ...