Description

上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走。但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一个通道连通了房 间A和B,那么既可以通过它从房间A走到房间B,也可以通过它从房间B走到房间A,为了提高难度,小希希望任意两个房间有且仅有一条路径可以相通(除非走 了回头路)。小希现在把她的设计图给你,让你帮忙判断她的设计图是否符合她的设计思路。比如下面的例子,前两个是符合条件的,但是最后一个却有两种方法从 5到达8。
 

Input

输入包含多组数据,每组数据是一个以0 0结尾的整数对列表,表示了一条通道连接的两个房间的编号。房间的编号至少为1,且不超过100000。每两组数据之间有一个空行。

整个文件以两个-1结尾。
 

Output

对于输入的每一组数据,输出仅包括一行。如果该迷宫符合小希的思路,那么输出"Yes",否则输出"No"。
 

Sample Input

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 -1
 

Sample Output

Yes
Yes
No
 
题目解析:判断一张图书否为树。1.边的条数比节点个数少一。2.没有环。
 
代码如下:
 # include<iostream>
# include<cstdio>
# include<algorithm>
# include<cstring>
# include<set>
using namespace std;
const int N=;
struct edge
{
int fr,to;
};
edge e[N];
int pre[N],n,cnt;
int mark[N];
void add(int u,int v)
{
e[cnt].fr=u;
e[cnt].to=v;
++cnt;
}
int find(int x)
{
int u=x;
while(pre[u]!=-)
u=pre[u];
int v;
while(pre[x]!=-){
v=x;
x=pre[x];
pre[v]=u;
}
return u;
}
bool ok()
{
memset(pre,-,sizeof(pre));
for(int i=;i<cnt;++i){
int u=find(e[i].fr);
int v=find(e[i].to);
//cout<<e[i].fr<<' '<<e[i].to<<' '<<u<<' '<<v<<endl;
if(u==v)
return false;
pre[u]=v;
}
return true;
}
int main()
{
int a,b;
while(scanf("%d%d",&a,&b))
{
if(a==-&&b==-)
break;
if(a==&&b==){
printf("Yes\n");
continue;
}
cnt=;
memset(mark,,sizeof(mark));
int num=;
mark[a]=mark[b]=;
num+=;
add(a,b);
//add(b,a);
while(scanf("%d%d",&a,&b),a+b){
if(!mark[a])
++num;
if(!mark[b])
++num;
mark[a]=mark[b]=;
add(a,b);
//add(b,a);
}
//cout<<cnt/2<<' '<<num-1<<endl;
if(cnt==num-&&ok())
printf("Yes\n");
else
printf("No\n");
}
return ;
}

HDU-1272 小希的迷宫 (并查集、判断图是否为树)的更多相关文章

  1. HDU - 1272 小希的迷宫 并查集判断无向环及连通问题 树的性质

    小希的迷宫 上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一 ...

  2. <hdu - 1272> 小希的迷宫 并查集问题 (注意特殊情况)

     本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272 Problem Description: 上次Gardon的迷宫城堡小希玩了很久(见Probl ...

  3. HDU 1272 小希的迷宫 并查集

    小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  4. (step5.1.6)hdu 1272(小希的迷宫——并查集)

    题目大意:输入一系列的点,判断这些点组成的图符不符合小希的思路(无环.连通) 解题思路: 1)如果两个节点的根节点相同,那么在这两个节点之间添加1条边以后,这个图肯定有环路. 2)孤立节点:被使用过& ...

  5. hdu 1257 小希的迷宫 并查集

    小希的迷宫 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1272 D ...

  6. hdu1272小希的迷宫(并查集判断回路和是否连通)

    传送门 迷宫中不能有回路,还要连通 如果最后集合数是一个那就是连通,否则不联通 要合并的两个顶点在相同集合内,表示出现了回路 输入时注意一下 #include<bits/stdc++.h> ...

  7. HDU 1272小希的迷宫(裸并查集,要判断是否构成环,是否是连通图)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1272 小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    ...

  8. hdu 1272 小希的迷宫(并查集+最小生成树+队列)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272 小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)     ...

  9. hdu-1272 小希的迷宫---并查集或者DFS

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1272 题目大意: Problem Description 上次Gardon的迷宫城堡小希玩了很久(见 ...

  10. HDU 1272 小希的迷宫 (并查集)

    小希的迷宫 题目链接: http://acm.hust.edu.cn/vjudge/contest/123393#problem/L Description 我们的小伙伴Bingo身为大二学长,他乐于 ...

随机推荐

  1. 关于QStandardItemModel

    类QabstractItemModel,QabstractListModel,QAbstractTableModel不保存数据,用户需要从这些类派生出子类,并在子类中定义某种数据结构来保存数据.与此不 ...

  2. js监听页面是否在浏览器当前页面

    在最近的一个socket项目中,需要监听客户端是否已读客服端发送的消息. 这里用到了html5中document新增了一个事件 visibilitychange,这个事件在页面前台或后台切换时被触发, ...

  3. Python入门之软件开发目录规范

    本章重点: 理解在开发人标准软件时,如何布局项目目录结构,以及注意开发规范的重要性. 一.为什么要有好的目录结构 二.目录组织的方式 三.关于README的内容 四.关于requirements.tx ...

  4. Python Web学习笔记之进程与线程

    要了解二者的区别与联系,首先得对进程与线程有一个宏观上的了解. 进程,是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竟争计算机系统资源的基本单位.每一个进程都有一个自己的地址空 ...

  5. bzoj1651 / P2859 [USACO06FEB]摊位预订Stall Reservations

    P2859 [USACO06FEB]摊位预订Stall Reservations 维护一个按右端点从小到大的优先队列 蓝后把数据按左端点从小到大排序,顺序枚举. 每次把比右端点比枚举线段左端点小的数据 ...

  6. JS(JavaScript)脚本库的积累

    在现在互联网盛行的时代,使得B/S架构飞速发展.曾经在大学的时候我一直都梦想着毕业后要找一个像腾讯这样大企业做C/S方面的开发工作(其实现在腾讯也有很多B/S软件),因为C/S体验度非常高,感觉非常好 ...

  7. Python3基础 print \n换行

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  8. 有时候shell中某些变量总是不能被改变是什么原因

    答:在子shell执行,那么变量的值总是不能如愿以偿的改变,示例如下: #!/bin/sh var="jello" cat "jello.txt" | whil ...

  9. js键盘按钮keyCode及示例大全

    以功能区分布 以 keycode 编号顺序分布 keycode 0 = keycode 1 = keycode 2 = keycode 3 = keycode 4 = keycode 5 = keyc ...

  10. 怎样借助Python爬虫给宝宝起个好名字--python 学习

    每个人一生中都会遇到一件事情,在事情出现之前不会关心,但是事情一旦来临就发现它极其重要,并且需要在很短的时间内做出重大决定,那就是给自己的新生宝宝起个名字. 因为要在孩子出生后两周内起个名字(需要办理 ...