题目大意:

从0~n-1编号的房间,从一个起点开始最后到达0号房间,每经过一扇门就关上,问最后能否通过所有门且到达0号房间

我觉得这道题的输入输出格式是我第一次遇到,所以在sscanf上也看了很久

每一行对应当前门能到达的房间,下方如有重复不在输入,所以会有空行,这里的空行,和将字符串内的数字一个个代入需要好好斟酌

这里只有两种情况能成功

从 0号房间出发,经过一个欧拉回路到达0

从别的房间出发,一个欧拉通路到达0,2个端点的均为基度节点

代码:

 #include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int door[];
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 m,n;
while(readLine(buf)){
if(buf[]=='S'){
sscanf(buf,"%*s %d %d",&m,&n);
memset(door,,sizeof(door)); int numOfDoor=;//记录所有门的数量,为了最后结果输出总共关上的门的数目
for(int i=;i<n;i++){
readLine(buf);
int k=,j;//读取数据在字符串中的指针位置
while(sscanf(buf+k,"%d",&j)==){
door[i]++,door[j]++;
numOfDoor++;
while(buf[k]&&buf[k]==' ')k++;
while(buf[k]&&buf[k]!=' ')k++;
}
}
readLine(buf);//读入END
int odd=,even=;
for(int i=;i<n;i++){
if(door[i]%!=)odd++;
else even++;
}
if(odd==&&m==) printf("YES %d\n",numOfDoor);
else if(odd==&&door[m]%==&&door[]%==&&m!=) printf("YES %d\n",numOfDoor);
else puts("NO");
}
else if(!strcmp(buf,"ENDOFINPUT")) break;
}
return ;
}

最新文章

  1. nodejs express 静态文件的路径
  2. 数据结构2 静态区间第K大/第K小
  3. IIS------无法打开登录所请求的数据库 &quot;company&quot;。登录失败。 用户 &#39;IIS APPPOOL\AppPool 4.0&#39; 登录失败。
  4. cocos2dx中对象的两步初始化
  5. Svn与Git的一些区别(转载)
  6. Harris角点
  7. jQuery常见面试题(转)
  8. MITK-Qt4.8.4(x64)+VS2012+Win7_X64 编译记录
  9. 玩javaweb的web.xml编译路径
  10. 136 Single Number(找唯一数Medium)
  11. 微软研究院的分布式云计算框架orleans
  12. Clojure发音
  13. 设置SO_RECVBUF和SO_SENDBUF套接字选项
  14. springboot+mybatis+druid数据库连接池
  15. HDU 3130 17多校7 Kolakoski(思维简单)
  16. SpringBoot入门 (九) MQ使用
  17. C#编程(三十八)----------运算符
  18. MySQL快速建立测试表
  19. 高性能mysql读书笔记(一):Schema与数据类型优化
  20. CMake设置输出目录

热门文章

  1. 关于获取计算机唯一ID问题
  2. android java 知识点
  3. 【数据分析 R语言实战】学习笔记 第七章 假设检验及R实现
  4. 实现流水灯以间隔500ms的时间闪烁(系统定时器SysTick实现的精确延时)
  5. 四次元新浪微博客户端Android源码
  6. 洛谷 P2894 [USACO08FEB]酒店Hotel
  7. Python3简明简称(八)—— 函数
  8. DROP CAST - 删除一个用户定义的类型转换
  9. _ 下划线 vue mixins 混入 变量前有下划线 变量不起作用
  10. 原生查找DOM的方法