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 ;
}
随机推荐
- ural 1018 Binary Apple Tree(树形dp | 经典)
本文出自 http://blog.csdn.net/shuangde800 ------------------------------------------------------------ ...
- nginx代理人server结合tomcat采用
相信非常多人都听过nginx,这个小巧的东西慢慢地在吞食apache和IIS的份额.那到底它有什么作用呢?可能非常多人未必了解. 说到反向代理,可能非常多人都听说,但详细什么是反向代理,非常多人预计就 ...
- android 19 activity纵横屏切换的数据保存与恢复
Bundle类:竖屏的activity换到横屏的activity的时候,会把竖屏的activity杀掉横屏的activity创建,竖屏的activity会有一些计算结果,可以用数据存起来,存到内存里面 ...
- FastDFS安装配置手册
文件服务器分布式系统安装手册 本文档详细的介绍了FastDFS的最小集群安装过程.集群环境如下: tracker:20.2.64.133 .用于调度工作,在访问上起负载均衡的作用. group1: s ...
- [转]C#中yield用法
yield 关键字向编译器指示它所在的方法是迭代器块.编译器生成一个类来实现迭代器块中表示的行为.在迭代器块中,yield 关键字与 return 关键字结合使用,向枚举器对象提供值.这是一个返回值, ...
- centos 6 搭建ftp服务器支持匿名读写
转载请注明: 凌云物网智科嵌入式实验室: http://iot-yun.com/ 郭文学<guowenxue@gmail.com> vsftpd在运行时一定要关闭SELinux,否 ...
- sql语句游标的写法
当循环查找一张表的信息时,我们得写一张游标来对每条信息进行操作,具体格式如下 DECLARE @fitemid int DECLARE #point_cursor CURSORFORSELECT fi ...
- heibernate增删改查总结一下自己的不足
难点也就我不熟悉的是数据库语句的书写,要加强复杂查询语句的书写 /* 简单的在共享类中已经可以用的了 * 总结: * * --------------------------------------查 ...
- WPF TextSelection获取选中部分内容
一.简单实例 //TextSelect继承自TextRange TextSelection selection = richTextBox.Selection; //1.获取选中内容 string r ...
- XE6 /XE8 & IOS开发之免证书真机调试三步走,生成iPA文件并安装到其它苹果设备上
XE6 & IOS开发之免证书真机调试(1):颁发属于自己的App签名证书(有图有真相) XE6 & IOS开发之免证书真机调试(2):连接真机并运行App(有图有真相) XE6 &a ...