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 ;
}
随机推荐
- nandflash中oob、ecc分析
1.为何需要分析? 最近一直接触这类驱动,如果对它的原理不懂的话,驱动调试会很麻烦!!!!!! 2.ecc? nand的纠错能力,目前有1位.4位和8位,也就是说在512字节中如果是4位的ecc那就可 ...
- [RxJS] Filtering operator: single, race
Single, race both get only one emit value from the stream. Single(fn): const source = Rx.Observable. ...
- [Javascript] Using JSHint for Linting with Gulp
gulpfile.js var gulp = require('gulp'); var jshint = require('gulp-jshint'); var stylish = require(' ...
- [Reactive Programming] Async requests and responses in RxJS
We will learn how to perform network requests to a backend using RxJS Observables. A example of basi ...
- mysql 操作指令笔记
设置区分大小写: 打开my.ini,最后加入: [mysqld] lower_case_table_names=2 (2表示区分大小写,但仅限于字段,数据库名.表名.存储过程名都是小写的) 查看方法: ...
- angularJS随笔
1.作用域 基于作用域的事件传播 作用域可以像DOM节点一样,进行事件的传播.主要是有两个方法: broadcasted :从父级作用域广播至子级 scope emitted :从子级作用域往上发射到 ...
- move file create directory.
If we want to move file to the directory that does not exist,and if we perform a File.Move,it will r ...
- requirejs+anjularjs+express框架
1.目录 2.首页login.html如下: <!DOCTYPE html><html> <head> <title>登录界面</title> ...
- 玩转CSLA.NET小技巧系列一:跳转页面丢失session,如何解决
很少写代码,最近在写代码被登录难倒了,这丫的一直在跟我较劲 每次登录完跳转到首页后还是未登录状态 if (ModelState.IsValid) { bool isSuccess = FI.Finan ...
- c#与c++交互的一些东西
最近做一个项目,对方公司只提供了一个c++的DLL,但没封住,c#无法DllImport.所以只能自己写c++来封住了. 对方的Dll只接收yuv420的图片格式,所以在c++里用opencv来转换. ...