Door man
poj1300:http://poj.org/problem?id=1300
题意:给你n个房间,房间之间有一些门,房间是按0~~n-进行编号的。然后给出一些房间的之间门,n行,每行的数字表示该们与其它们之间是否有门,而且只表示出比他大的房间号。然后给你一个起点,问你从起点出发,然后经过所有的房间回到0点,房间之间可能有多道门。
题解:题目描述的可能不是很清楚,题目是要求一条欧拉回路。源点是0点,可以从起点到达源点之后,看看能否经过每个房间回到0点。


#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
int readLine(char *s){
int L;
for(L=;(s[L]=getchar())!='\n'&&s[L]!=EOF;L++);
s[L]=;
return L;
}//取出每一行,并且返回串的长度(包括空格);
int main(){
char buf[];
int i,j,m,n;int door[];
while(readLine(buf)){
if(buf[]=='S'){
sscanf(buf,"%*s%d%d",&m,&n);//读取起点和房间的个数 *%s包第一个字符串吃掉了
for( i=;i<n;i++)
door[i]=;//初始化
int doors=;//记录门的个数
for(i=;i<n;i++){
readLine(buf);//读取一行
int k=;//表示从哪一位开始读取
while(sscanf(buf+k,"%d",&j)==){
doors++;
door[i]++;
door[j]++;
while(buf[k]&&buf[k]==' ')k++;//表示把k移动两位,来读取下一个数
while(buf[k]&&buf[k]!=' ')k++;//
}
}
readLine(buf);//读取END
int even=;//记录偶度点的个数
int odd=;//记录奇度点的个数
for( i=;i<n;i++){
if(door[i]%==)even++;
else
odd++;
}
if(odd==&&m==)//如果起点是0并且没有奇度点直接输出
printf("YES %d\n",doors);
else if(odd==&&door[m]%==&&m!=&&door[]%==)//如果有两个,分别是起点和0,并且起点不是0
printf("YES %d\n",doors);
else
printf("NO\n"); }
if(!strcmp(buf,"ENDOFINPUT"))break;
}
return ;
}
随机推荐
- QT程序打包发布(双击运行)
- iOS--RunLoop原理介绍
什么是RunLoop RunLoop从字面上看是运行循环的意思,这一点也不错,它确实就是一个循环的概念,或者准确的说是线程中的循环. 本文一开始就提到有些程序是一个圈,这个圈本质上就是这里的所谓的Ru ...
- [转] 使用Git进行小项目代码管理
http://www.uml.org.cn/pzgl/201206155.asp 之前在公司使用过SVN(无甚感觉)和ClearCase(把人恶心死的东西)两种版本控制工具,都不满意.后来想自己写点东 ...
- 关于EF查询表里的部分字段
这个在项目中用到了,在网上找了一下才找到,留下来以后自已使用. List<UniversalInfo> list =new List<UniversalInfo>(); lis ...
- java web(jsp)-The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
在静态项目上新建 jsp文件的时候,报错:The superclass "javax.servlet.http.HttpServlet" was not found on the ...
- Android 官方新手指导教程
一.开始 1.建立第一个应用程序 依赖关系和先决条件 Android SDK ADT Plugin 20.0.0 或更高 (如果你使用eclipse的话) 欢迎来到Android应用程序开发! 这一节 ...
- Gridview分頁保存選項
#region //'Revision: 1.00 Created Date: 2013/08/02 Created ID: Una [#1300071]增加多選框 /// <summary&g ...
- ASIHttpRequest网络请求第三方类库使用方法详解
一. 第一步首先你要从网络上下载ASIHttpRequestlib, 下载以后解压,增加到你的工程里面, 这个时间检查工程内部是否已经导入成功,文件结构如下: ASIHTTPRequestConfig ...
- C# 多个线程一直跑着While(true)
在使用多线程的时候,开了多个线程一直在While(true),会造成CPU占用很高.这时候要在线程内加入一句Thread.Sleep(1),让他稍微睡一下.就不会消耗那么多CPU了. 代码: Thre ...
- 【转】WF4.0实战系列索引
转自:http://www.cnblogs.com/zhuqil/archive/2010/07/05/wf4-in-action-index.html 此系列的工作流文件案例比较多点,实用性好. W ...