小希的迷宫(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来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一个通道连通了 ...
随机推荐
- PCA和LDA降维的比较
PCA 主成分分析方法,LDA 线性判别分析方法,可以认为是有监督的数据降维.下面的代码分别实现了两种降维方式: print(__doc__) import matplotlib.pyplot as ...
- 使用jQuery加载html页面到指定的div
一.jQuery加载一个html页面到指定的div里 把a.html里面的某一部份的内容加载到b.html的一个div里.比如:加载a.html里面的<div id=“row"> ...
- HoloLens开发手记 - Unity之World Anchor空间锚
World Anchor空间锚提供了一种能够将物体保留在特定位置和旋转状态上的方法.这保证了全息对象的稳定性,同时提供了后续在真实世界中保持全息对象位置的能力.简单地说,你可以为全息物体来添加空间锚点 ...
- 那些不好的Socket服务器设计
基础Socket 自强的程序猿们都喜欢搞Socket,而且觉得最好自己来封装个组件出来,如果再往上,加入某种数据协议,让上层服务器开发照着此协议走,就是一个小小的框架了.于是,从头开始,最开始的服务器 ...
- cocos2d-x 3.0以上版本字体设置问题
cocos2d-x中的万年大坑,字体总算是有比较好的结局办法了.之前都是CCLabelTTF,CCLabelBMFont,CCLabelAtlas什么的,我只想说一句:好难用!毕竟是做游戏,那么难看的 ...
- PDA设备小知识--(IP)工业防护等级含义
IP(INTERNATIONAL PROTECTION)防护等级是专门的工业防护等级,,它将电器依其防尘.防湿气之特性加以分级.IP防护等级是由两个数字所组成,第1个数字表示电器离尘.防止外物侵入的等 ...
- jQuery使用之(二)设置元素的样式
css是页面不能分隔的部分,jQuery中也提供了一些css相关的实用的办法.前面章节中有使用过 addClass()为元素添加css样式风格.本节主要介绍jQuery如何设置页面的样式风格.包括添加 ...
- HTML5——将图片拖拽上传
如下图所示: 代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...
- go语言的模板,text/template包
go语言的模板,text/template包 定义 模板就是将一组文本嵌入另一组文本里 传入string--最简单的替换 package main import ( "os" &q ...
- php Curl_setop 的学习
cur_op的学习 ###curl_setopt (int ch, string option, mixed value) option的参数 CURLOPT_INFILESIZE: 当你上传一个文件 ...