小希的迷宫(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来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一个通道连通了 ...
随机推荐
- typeof和instanceof简介及用法
typeof 使用方式:typeof a 或者 typeof (a) 返回一个string类型的值 顾名思义,这货是检查类型的,输出的是一个string值,直接看下面的检测代码: console.lo ...
- javascript中的闭包,超简单论述,保证小学生必懂
js中的闭包已经有很多论断了,大家伙有没有听懂了,先引用一片比较高端 的 ”汤姆大叔“ 深入理解JavaScript系列(16):闭包(Closures) 好了,为了引起大家的兴趣,先来小诗一首 v ...
- WPF开发时光之痕日记本
很久没有写东西了,新的一年新的开始吧. 很早就想自己开发一款日记本软件不仅自己使用,也可以让大家免费使用,最主要的是对自己有一个认可,自学WPF以来,感觉不很顺利,WPF的资料相对来说有点少,主 ...
- DateTime.Parse
上月第一天:DateTime.Parse(DateTime.Now.AddMonths(-1).ToString("yyyy-MM-01")) 上周星期天:DateTime.Par ...
- logic标签用法
logic <logic:iterate> <% Dog dog1=new Dog(); dog1.setAge(2); dog1.setName("xiaoming& ...
- nginx配置反向代理示例
环境: nginx1:192.168.68.41 tomcat1:192.168.68.43 tomcat2:192.168.68.45 nginx安装网上很多教程,我是用yum安装的. 配置ngin ...
- poj2406 KMP
kmp简单题 找循环节.由于KMP的next[]数组,所以可以考虑最后一组的情况,及next[n]的值:n-next[n]的值表示一个循环节. 如果n%(n-next[n])!=0表明该循环不成立.不 ...
- Google-解决在调试页面或者js时总是提示烦恼的断点问题
按F12键,然后切换到Source标签,看底下的那个跟暂停一样的图标是不是变成蓝色或紫色了? 如果是蓝色或者紫色,则把他切换到“灰色”状态(点击图标就会切换成不同的状态.或者可能是其他颜色状态),如下 ...
- Java-Stack
package 集合类.list类; import java.util.Date; import java.util.Stack; /** * stack类继承与vector类 * @author j ...
- Spring 配置文件applicationContext.xml
Spring配置文件是用于指导Spring工厂进行Bean生产.依赖关系注入(装配)及Bean实例分发的"图纸". Spring配置文件是一个或多个标准的XML文档,applica ...