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 ;
}

随机推荐

  1. cocos2d-x 3.0 final 中文显示

    cocos2d-x 3.0的中文显示非常easy,首先,你须要一个xml文件保存中文,还须要一个能显示中文的TTF文件 <?xml version="1.0" encodin ...

  2. [RxJS] Filtering operators: take, first, skip

    There are more operators in the filtering category besides filter(). This lesson will teach how take ...

  3. android 23 启动带2个Categories值的预定义acticity和桌面activity

    mainActivity.java package com.sxt.day04_07_twoaction; import android.os.Bundle; import android.app.A ...

  4. Linux命令之dot - 绘制DOT语言脚本描述的图形

    本文链接:http://codingstandards.iteye.com/blog/840055 用途说明 Graphviz (Graph Visualization Software的缩写)是一个 ...

  5. 利用 SysRq 键排除和诊断系统故障

    说白了,SysRq手动触发而不用命令, /proc/sysrq-trigger 这个是通过命令接口 实验:LINUX窗口下 ,CTRL+ALT+F1,切换到TTY1,在文本模式下,按下 ALT+Sys ...

  6. java按照集合中元素的属性进行排序示例代码

    public class Student { private String name; private int age; private int id; public Student() {  sup ...

  7. 《REWORK》启示录 招聘笔杆子——程序员为什么值得写博客

    Hire Great Writers 仿佛这是写给自己看的,不过这在其中也有着相当有趣的意义 .虽然自己算是一个能写的人,或许这算是一种不算才华的才华,写博文的意义通常不会在于去描述自己怎样,怎样.通 ...

  8. widows sever2003 PHP环境搭建

    此文仅为文字笔记,非原创,摘阅自互联网  1.安装IIS6.0及Framework 2.0  2.安装fastcgi http://www.iis.net/download/FastCGI 安装fas ...

  9. Java使用poi对Execl简单_读_操作

    public class ReadExecl { // private final String XLSX = ".xlsx"; // 2007以上版本 // private fi ...

  10. object转化为string

    package common; import java.util.ArrayList; import java.util.List; public class DataZh { public stat ...