POJ--1300--Door Man【推断无向图欧拉通路】
链接:http://poj.org/problem?id=1300
题意:有n个房间。每一个房间有若干个门和别的房间相连。管家从m房间開始走。要回到自己的住处(0),问是否有一条路能够走遍全部的门而且没有反复的路。
无向图欧拉通路充要条件:G为连通图,而且G仅有两个奇度结点(度数为奇数的顶点)或者无奇度结点。
无向图欧拉回路充要条件:G为无奇度结点的连通图。
思路:推断是否存在欧拉通路。依据欧拉通路、欧拉回路的性质来做。有两种情况:一种是欧拉回路。全部房间的门的个数都是偶数个,而且此时初始房间不是0,此时存在要求的路径。假设初始是0则不行。还有一种是欧拉通路。仅仅有两个房间门是奇数个。剩下都是偶数个。而且这两个房间一个是0。一个是当前起点,而且起点不能是0,此时也存在要求的路径,否则不存在。
输入比較蛋疼
#include<cstring>
#include<string>
#include<fstream>
#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cctype>
#include<algorithm>
#include<queue>
#include<map>
#include<set>
#include<vector>
#include<stack>
#include<ctime>
#include<cstdlib>
#include<functional>
#include<cmath>
using namespace std;
#define PI acos(-1.0)
#define MAXN 500100
#define eps 1e-7
#define INF 0x7FFFFFFF
#define LLINF 0x7FFFFFFFFFFFFFFF
#define seed 131
#define mod 1000000007
#define ll long long
#define ull unsigned ll
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1 int in[30],out[30];
char s[20],s1[200];
int main(){
int i,j;
int m,n;
int a,flag,ans,fk;
while(scanf("%s",s)!=EOF){
if(s[0]=='E'&&strlen(s)>5) break;
scanf("%d%d",&m,&n);
getchar();
ans = 0;
flag = 0;
fk = 0;
memset(in,0,sizeof(in));
for(i=0;i<n+1;i++){
gets(s1);
int p = 0;
while(sscanf(s1+p,"%d",&a)==1){
ans++;
in[a]++;
in[i]++;
while(s1[p]!='\0'&&s1[p]!=' ') p++;
while(s1[p]!='\0'&&s1[p]==' ') p++;
}
}
for(i=0;i<n;i++){
if(in[i]&1) flag++;
}
if(!flag){
if(!m) fk = 1;
else fk = 0;
}
else{
if(flag==2&&m!=0&&in[m]&1&&in[0]&1) fk = 1;
else fk = 0;
}
if(fk) printf("YES %d\n",ans);
else puts("NO");
}
return 0;
}
POJ--1300--Door Man【推断无向图欧拉通路】的更多相关文章
- POJ 2337 Catenyms(有向图的欧拉通路)
题意:给n个字符串(3<=n<=1000),当字符串str[i]的尾字符与str[j]的首字符一样时,可用dot连接.判断用所有字符串一次且仅一次,连接成一串.若可以,输出答案的最小字典序 ...
- POJ 1780 Code(有向图的欧拉通路)
输入n(1<=n<=6),输出长度为10^n + n -1 的字符串答案. 其中,字符串以每n个为一组,使得所有组都互不相同,且输出的字符串要求字典序最小. 显然a[01...(n-1)] ...
- SGU101 求有重边的无向图欧拉迹
题意:好多木棒,俩端有数字(0--6)标记,按数字相同的端首尾相连成一条直线(木棒可以相同).即求有重边的无向图欧拉迹. 先判定是否为欧拉图,俩个条件,不说了.如果是欧拉图,输出路经. 方法:dfs遍 ...
- 欧拉通路-Play on Words 分类: POJ 图论 2015-08-06 19:13 4人阅读 评论(0) 收藏
Play on Words Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 10620 Accepted: 3602 Descri ...
- POJ 2513 Colored Sticks (离散化+并查集+欧拉通路)
下面两个写得很清楚了,就不在赘述. http://blog.sina.com.cn/s/blog_5cd4cccf0100apd1.htmlhttp://www.cnblogs.com/lyy2890 ...
- POJ 1386 有向图欧拉通路
题意:给你一些字符串,这些字符串可以首位相接(末位置如果和另一个字符串的首位置相同的话就可以相连) .然后问你是否可以全部连起来. 思路:就是取出每个字符串的首尾位置,然后求出出度和入度,根据有向欧拉 ...
- Poj 2337 Catenyms(有向图DFS求欧拉通路)
题意: 给定n个单词, 问是否存在一条欧拉通路(如acm,matal,lack), 如果存在, 输出字典序最小的一条. 分析: 这题可以看作http://www.cnblogs.com/Jadon97 ...
- CodeForces - 508D Tanya and Password(欧拉通路)
Description While dad was at work, a little girl Tanya decided to play with dad characters. She has ...
- Uva10129 - Play on Words 欧拉通路 DFS
题目链接: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=105& ...
随机推荐
- objective-C学习笔记(三)数据成员:属性与实例变量
类型成员 Type Member 结构体 struct 的成员很简单,只有变量. 类的成员就很多了: 数据成员 data member 描述对象(本讲重点) · 实例变量 instance vari ...
- 获取多个div,点击第几个,显示第几个
1.闭包:函数内部又定义了一个函数,内部函数引用外部函数的变量,就构成了闭包. <script type="text/javascript"> var divs = d ...
- BZOJ 1050: [HAOI2006]旅行comf( 并查集 )
将edge按权值排序 , O( m² ) 枚举边 , 利用并查集维护连通信息. ------------------------------------------------------------ ...
- C#获取上个月的第一天零点和最后一天23点59分59秒
//上个月第一天0点 DateTime date2 = DateTime.Now.AddMonths(-1).Date.AddDays(1 - DateTime.Now.Day); R ...
- maxContainerCapability 设置不足
异常: REDUCE capability required is more than the supported max container capability in the cluster. K ...
- html5 存储篇(一)
localStorage 和 sessionStorage localStorage 与 sessionStorage的相同点: (1).都是用于客户端存储的技术,相对于传统 ...
- 5.PHP 教程_PHP echo/print
PHP echo 和 print 语句 echo和print区别: echo-可以输出一个或多个字符串 print-只允许输出一个字符串,返回值总为1 提示:echo输出的速度比print快,echo ...
- pyhton10min系列之程序员的浪漫-足迹生成器,有视频教程
记录去过的足迹 本文为原创文章 项目主页 跪求star 程序员的浪漫,我女朋友蘑菇喜欢旅游,于是我做了这个,记录2015一起去过的地方,祝她圣诞快乐 如果觉得对你有帮助,github求个star 视频 ...
- LintCode-三数之和 II
题目描述: 给一个包含n个整数的数组S, 找到和与给定整数target最接近的三元组,返回这三个数的和. 注意事项 只需要返回三元组之和,无需返回三元组本身 样例 例如S = . 和最接近1的三元组 ...
- 转: markdown基本语法
Markdown 是一种轻量级标记语言,能将文本换成有效的XHTML(或者HTML)文档,它的目标是实现易读易写,成为一种适用于网络的书写语言. Markdown 语法简洁明了,易于掌握,所以用它来写 ...