小希的迷宫(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来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一个通道连通了 ...
随机推荐
- 如何自定义FloatingActionButton的大小
Google最近为了让开发者更好的更规范的应用Material Design设计思想,特意放出了android support design library,里面含有更多Material Design ...
- Linux下硬盘安装Windows系统。
注意:本方法安装后会把Linux系统损坏,方法适用于完全不再需要Linux系统. 本方法在ubuntu 14.04,centos 6.5,debian 8测试成功. 安装方法是通过grub2引导Win ...
- git点滴的积累
git的基本学习的网址: http://www.yiibai.com/git/git_update_operation.html 0.git首次上传代码 http://www.cnblogs.com/ ...
- Bootstrap2和3的区别
如果你需要兼容IE8甚至是IE7和IE6,那么只能选择Bootstrap2,虽然它自身在IE6的效果也并不完美. 但是倘若你跟随时代的脚步,并且面向的客户也很高端大气上档次地选择只需要兼容高级 ...
- web前端开发教程系列-1 - 前端开发编辑器介绍
目录: 前言 一. Webstorm 1. 优点 2. 缺点 3. 教程 4. 插件 5. 技巧 二. SublimeText 1. 优点 2. 缺点 3. 教程 4. 插件 5. 技巧 前言 由于很 ...
- DOM(一)模型中的模型节点
<html>位于网页的顶端 它没有父辈,称之为根节点 1.元素节点(element node) 可以说,整个DOM模型都是由元素节点(element node)组成 比如文本段落元素“&l ...
- Rhino Mock
mock interfaces, delegates and classes, including those with parameterized constructors. set expecta ...
- 【codevs 1200】【NOIP 2012】同余方程 拓展欧几里德求乘法逆元模板题
模板,,, #include<cstdio> using namespace std; void exgcd(long long a,long long b,long long & ...
- Java-set
set public interface Set<E> extends Collection<E> 使用集合汇总 package 集合类.Set类; /** * Set不允许重 ...
- Yii2 radioList设置默认值
可以在对应的Controller的action中设置 $model->type = 1; 在view中 <?php $form = ActiveForm::begin(); ?> ...