POJ 1300 Door Man(欧拉回路的判定)
题目链接
题意 : 庄园有很多房间,编号从0到n-1,能否找到一条路径经过所有开着的门,并且使得通过门之后就把门关上,关上的再也不打开,最后能回到编号为0的房间。
思路 : 这就是一个赤裸裸的判断欧拉通路的问题了,但实际上,就只有两种情况能够输出YES,以房间为顶点,连接房间之间的门为边构造图,这两种情况分别是存在欧拉回路和欧拉通路的情况:所有房间都是偶数个门并且起始房间就是0,所以可以回到0,存在欧拉回路;有两个房间的门是奇数个,其余都是偶数个,这种情况下,要求出发房间和0房间的门是奇数个,并且其实房间不能是0,因为不存在0到0的欧拉回路,但是存在别的房间到0的欧拉通路。
1 //POJ 1300 2 #include <stdio.h> 3 #include <string> 4 #include <iostream> 5 #include <string.h> 6 7 using namespace std ; 8 9 int M,N,door[20] ; 10 string sh ; 11 char sh1[789] ; 12 int main() 13 { 14 while(cin >> sh) 15 { 16 if(sh == "ENDOFINPUT") 17 break ; 18 cin >> M >> N ; 19 getchar() ; 20 int cnt = 0 ; 21 memset(door,0,sizeof(door)) ; 22 for(int i = 0 ; i < N ; i++) 23 { 24 gets(sh1) ; 25 int len = strlen(sh1) ; 26 for(int j = 0 ; j < len ; j++) 27 { 28 if(sh1[j] != ' ') 29 { 30 int d = sh1[j]-'0' ; 31 cnt ++ ; 32 door[i] ++ ; 33 door[d] ++ ; 34 } 35 } 36 } 37 cin >> sh ; 38 int odd = 0 ,even = 0 ; 39 for(int i = 0 ; i < N ; i++) 40 { 41 if(door[i] % 2) odd ++ ; 42 else even ++ ; 43 } 44 if(odd == 0 && M == 0) 45 cout<< "YES "<< cnt <<endl ; 46 else if(odd == 2 && M != 0) 47 cout << "YES "<<cnt <<endl ; 48 else cout<<"NO"<<endl ; 49 } 50 return 0 ; 51 }
View Code
转载于:https://www.cnblogs.com/luyingfeng/p/3877442.html
POJ 1300 Door Man(欧拉回路的判定)相关推荐
- POJ 1300 Door Man(欧拉回路判定)
欧拉回路(并查集) 题目 参考:http://blog.csdn.net/u013480600/article/details/30099269 无向边找通路+回路 题意:给你N个房间(图节点)以及房 ...
- poj 1300 Door man
一 原题 Door Man Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 2951 Accepted: 1205 Des ...
- 【Java】欧拉回路的判定
在18世纪,东普鲁士哥尼斯堡有一条大河,河中有两个小岛.全城被大河分割成四块陆地,河上架有七座桥,把四块陆地联系起来(如图).当时许多市民都在思索一个问题:一个散步者能否从某一陆地出发,不重复地经过每 ...
- [欧拉回路] poj 1300 Door Man
题目链接: http://poj.org/problem?id=1300 Door Man Time Limit: 1000MS Memory Limit: 10000K Total Submis ...
- POJ 1300 Door Man G++ 无向图欧拉路判定 背
#include <iostream> #include <cstdio> #include <string> #include <cstring> u ...
- poj 1637 Sightseeing tour 混合欧拉图判定
POJ - 1637点我点我:-) Sightseeing tour Time Limit: 1000MS Memory Limit: 10000KB 64bit IO Format: %ll ...
- Door Man poj 1300
题目大意: 沿着一个通道,穿过这些大房间,并把房门关上.你的问题是能否找到一条路径经过所有开着门的房间,并使得: 1) 通过门后立即把门关上: 2) 关上了的门不再打开: 3) 最后回 ...
- 将不同数据存储到数据库中_如何将数据存储在兔子洞中
将不同数据存储到数据库中 Starting with databases and venturing into how the physical components of a computer st ...
- POJ 1386 欧拉路的判定
题意: 给你n个单词,问你有没有一种排列方式可以所有单词的首部是相邻单词的尾部. 思路: 这个题目还挺基础的,就是个欧拉的判定,首先对于每一个单词,我们把他抽象成边,每个单词两 ...
最新文章
- C++ 笔记(02)— 程序结构(头文件说明、命名空间、函数返回值、函数参数、注释、语句结束符、cin/cout)
- 在Ubuntu 14.04 64bit上查看硬件配置信息
- 科大讯飞刘庆峰发表对未来10年AI三大判断
- kafka记录及面试题
- web 开发之js---js 中的数组操作
- Network Service 权限问题
- MFC中的CAsyncSocket类实现网络通信
- NPOI office操作
- java 文件上传至oracle blob字段 实现
- 苹果cms v10模板 蓝色简洁大气手机端模板
- 如何在开源社区贡献代码_在社区支持大量涌现之后,Biicode便开始开源
- 加密货币交易所Coinbase在私募股票市场中估值达900亿美元
- ubuntu iptables 共享上网
- 性能飙升160%!阿里云发布第七代ECS、云原生数据库PolarDB-X等重磅新品 | 凌云时刻...
- 入门北京linux嵌入式培训行吗
- 电子计算机的两个重要改进是,1946年,冯.诺依曼在研制EDVAC计算机时,提出的两个重要改进是什么?...
- 手机浏览器devtools_浏览器DevTools的秘诀:启动,网络和性能
- luogu P3527 [POI2011]MET-Meteors
- java mongodb gridfs_MongoDB-4 GridFS 文件存储
- [转][晓月风瑟推荐]值得用一生来品味的100句凡人语录