题目链接

题意 : 庄园有很多房间,编号从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(欧拉回路的判定)相关推荐

  1. POJ 1300 Door Man(欧拉回路判定)

    欧拉回路(并查集) 题目 参考:http://blog.csdn.net/u013480600/article/details/30099269 无向边找通路+回路 题意:给你N个房间(图节点)以及房 ...

  2. poj 1300 Door man

    一 原题 Door Man Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 2951   Accepted: 1205 Des ...

  3. 【Java】欧拉回路的判定

    在18世纪,东普鲁士哥尼斯堡有一条大河,河中有两个小岛.全城被大河分割成四块陆地,河上架有七座桥,把四块陆地联系起来(如图).当时许多市民都在思索一个问题:一个散步者能否从某一陆地出发,不重复地经过每 ...

  4. [欧拉回路] poj 1300 Door Man

    题目链接: http://poj.org/problem?id=1300 Door Man Time Limit: 1000MS   Memory Limit: 10000K Total Submis ...

  5. POJ 1300 Door Man G++ 无向图欧拉路判定 背

    #include <iostream> #include <cstdio> #include <string> #include <cstring> u ...

  6. poj 1637 Sightseeing tour 混合欧拉图判定

    POJ - 1637点我点我:-) Sightseeing tour Time Limit: 1000MS   Memory Limit: 10000KB   64bit IO Format: %ll ...

  7. Door Man poj 1300

         题目大意: 沿着一个通道,穿过这些大房间,并把房门关上.你的问题是能否找到一条路径经过所有开着门的房间,并使得: 1)  通过门后立即把门关上: 2)  关上了的门不再打开: 3)  最后回 ...

  8. 将不同数据存储到数据库中_如何将数据存储在兔子洞中

    将不同数据存储到数据库中 Starting with databases and venturing into how the physical components of a computer st ...

  9. POJ 1386 欧拉路的判定

    题意:       给你n个单词,问你有没有一种排列方式可以所有单词的首部是相邻单词的尾部. 思路:       这个题目还挺基础的,就是个欧拉的判定,首先对于每一个单词,我们把他抽象成边,每个单词两 ...

最新文章

  1. C++ 笔记(02)— 程序结构(头文件说明、命名空间、函数返回值、函数参数、注释、语句结束符、cin/cout)
  2. 在Ubuntu 14.04 64bit上查看硬件配置信息
  3. 科大讯飞刘庆峰发表对未来10年AI三大判断
  4. kafka记录及面试题
  5. web 开发之js---js 中的数组操作
  6. Network Service 权限问题
  7. MFC中的CAsyncSocket类实现网络通信
  8. NPOI office操作
  9. java 文件上传至oracle blob字段 实现
  10. 苹果cms v10模板 蓝色简洁大气手机端模板
  11. 如何在开源社区贡献代码_在社区支持大量涌现之后,Biicode便开始开源
  12. 加密货币交易所Coinbase在私募股票市场中估值达900亿美元
  13. ubuntu iptables 共享上网
  14. 性能飙升160%!阿里云发布第七代ECS、云原生数据库PolarDB-X等重磅新品 | 凌云时刻...
  15. 入门北京linux嵌入式培训行吗
  16. 电子计算机的两个重要改进是,1946年,冯.诺依曼在研制EDVAC计算机时,提出的两个重要改进是什么?...
  17. 手机浏览器devtools_浏览器DevTools的秘诀:启动,网络和性能
  18. luogu P3527 [POI2011]MET-Meteors
  19. java mongodb gridfs_MongoDB-4 GridFS 文件存储
  20. [转][晓月风瑟推荐]值得用一生来品味的100句凡人语录

热门文章

  1. uni-app文档需要注意细节点
  2. react学习(67)--git 屏蔽文件不被追踪
  3. 前端学习(3067):vue+element今日头条管理-频道筛选完成
  4. [html] 举例说明锚点定位有什么作用?
  5. 23为什么要帮助他人
  6. [css] flex与其他有什么不同,用它有什么好处?
  7. [js] promise的构造函数是同步执行还是异步执行,它的then方法呢?
  8. 前端学习(2778):uni组件库的使用
  9. 工作92:500错误
  10. Vue中 $ref 的用法