题目链接

题意 : 庄园有很多房间,编号从0到n-1,能否找到一条路径经过所有开着的门,并且使得通过门之后就把门关上,关上的再也不打开,最后能回到编号为0的房间。

思路 : 这就是一个赤裸裸的判断欧拉通路的问题了,但实际上,就只有两种情况能够输出YES,以房间为顶点,连接房间之间的门为边构造图,这两种情况分别是存在欧拉回路和欧拉通路的情况:所有房间都是偶数个门并且起始房间就是0,所以可以回到0,存在欧拉回路;有两个房间的门是奇数个,其余都是偶数个,这种情况下,要求出发房间和0房间的门是奇数个,并且其实房间不能是0,因为不存在0到0的欧拉回路,但是存在别的房间到0的欧拉通路。

 //POJ 1300
#include <stdio.h>
#include <string>
#include <iostream>
#include <string.h> using namespace std ; int M,N,door[] ;
string sh ;
char sh1[] ;
int main()
{
while(cin >> sh)
{
if(sh == "ENDOFINPUT")
break ;
cin >> M >> N ;
getchar() ;
int cnt = ;
memset(door,,sizeof(door)) ;
for(int i = ; i < N ; i++)
{
gets(sh1) ;
int len = strlen(sh1) ;
for(int j = ; j < len ; j++)
{
if(sh1[j] != ' ')
{
int d = sh1[j]-'' ;
cnt ++ ;
door[i] ++ ;
door[d] ++ ;
}
}
}
cin >> sh ;
int odd = ,even = ;
for(int i = ; i < N ; i++)
{
if(door[i] % ) odd ++ ;
else even ++ ;
}
if(odd == && M == )
cout<< "YES "<< cnt <<endl ;
else if(odd == && M != )
cout << "YES "<<cnt <<endl ;
else cout<<"NO"<<endl ;
}
return ;
}

最新文章

  1. c# float显示时保存一位小数
  2. 杭电ACM1000
  3. PHP防SQL注入不要再用addslashes和mysql_real_escape_string
  4. hadoop本地库与系统版本不一致引起的错误解决方法
  5. 【css hack】正是我所找的,帮了大忙啊
  6. ChannelFactory.Endpoint 上的地址属性为空。ChannelFactory 的终结点必须指定一个有效的地址。
  7. Android 上多方式定位元素(python)
  8. HTML5 全屏 API
  9. Codeforces Round #529 (Div. 3) F.Make It Connected
  10. [SQL]查询整个数据库中某个特定值所在的表和字段的方法
  11. JAVA中对List&lt;Map&lt;String,Object&gt;&gt;中的中文汉字进行排序
  12. 把xml转成javabean的工具类
  13. hustoj 管理员和后台设置
  14. 【Selenium-WebDriver自学】Selenium-IDE安装和使用(一)
  15. BZOJ.2212.[POI2011]Tree Rotations(线段树合并)
  16. Java Callable和Future简述
  17. Android -- onAttachedToWindow()
  18. postman发送post数据到node.js中
  19. Android 获取联系人和电话号码
  20. 关于java调用Dll文件的异常 %1 不是有效的 Win32 应用程序。

热门文章

  1. iOS学习之C语言函数指针
  2. 使用AnkhSvn-2.5.12478.msi管理vs2013代码的工具安装步骤使用
  3. 50.ISE布局布线错误
  4. OC中成员变量的命名
  5. LeetCode-Largest Divisble Subset
  6. dmucs与distcc
  7. win8.1 cygwin编译java轻量虚拟机avian
  8. 你所必须掌握的三种异步编程方法callbacks,listeners,promise
  9. 【工具】openwrt安装记录
  10. 【CentOs】开机启动与防火墙