HDU-1272 小希的迷宫 (并查集、判断图是否为树)
2015-07-28 09:47
519 查看
Description
上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走。但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一个通道连通了房 间A和B,那么既可以通过它从房间A走到房间B,也可以通过它从房间B走到房间A,为了提高难度,小希希望任意两个房间有且仅有一条路径可以相通(除非走 了回头路)。小希现在把她的设计图给你,让你帮忙判断她的设计图是否符合她的设计思路。比如下面的例子,前两个是符合条件的,但是最后一个却有两种方法从 5到达8。
View Code
上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走。但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一个通道连通了房 间A和B,那么既可以通过它从房间A走到房间B,也可以通过它从房间B走到房间A,为了提高难度,小希希望任意两个房间有且仅有一条路径可以相通(除非走 了回头路)。小希现在把她的设计图给你,让你帮忙判断她的设计图是否符合她的设计思路。比如下面的例子,前两个是符合条件的,但是最后一个却有两种方法从 5到达8。
# include<iostream> # include<cstdio> # include<algorithm> # include<cstring> # include<set> using namespace std; const int N=1000005; struct edge { int fr,to; }; edge e ; int pre ,n,cnt; int mark ; 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]!=-1) u=pre[u]; int v; while(pre[x]!=-1){ v=x; x=pre[x]; pre[v]=u; } return u; } bool ok() { memset(pre,-1,sizeof(pre)); for(int i=0;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==-1&&b==-1) break; if(a==0&&b==0){ printf("Yes\n"); continue; } cnt=0; memset(mark,0,sizeof(mark)); int num=0; mark[a]=mark[b]=1; num+=2; 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]=1; add(a,b); //add(b,a); } //cout<<cnt/2<<' '<<num-1<<endl; if(cnt==num-1&&ok()) printf("Yes\n"); else printf("No\n"); } return 0; }
View Code
相关文章推荐
- 微信开发经常使用的东西
- POJ 2676 Sudoku(DFS + 回溯)
- Codeforces Round #284 (Div. 2) C. Crazy Town 数学
- gps定位Qt界面百度地图api的介绍
- Qt因为链接问题出错
- 基于QT4的linux串口助手
- Oracle 递归函数与等级
- iOS开发网络篇—大文件的多线程断点下载
- android crosswalk-webview 取代 webview
- java 判断三个字符串中是否有相等,去掉重复字符串输出
- MySQL常用SQL语句
- Haffman编码
- 32种谷歌浏览器插件,程序员的福音
- javaweb-url /
- HDU 1069 Monkey and Banana(DP)
- 数据产品初期需求思考的问题
- Ubuntu 下开发 Android 环境变量设置
- Android开发过程随记_NDK编程相关
- 简单的ppt转换为pdf的方法
- 如何创建一个简单的数据库