poj 1300 Door man

POJ 1300 Door Man:无向图、欧拉定理、gets、sscanf 立即下载

一 原题

Door Man
Time Limit: 1000MS Memory Limit: 10000K
Total Submissions: 2951 Accepted: 1205

Description

You are a butler in a large mansion. This mansion has so many rooms that they are merely referred to by number (room 0, 1, 2, 3, etc...). Your master is a particularly absent-minded lout and continually leaves doors open throughout a particular floor of the house. Over the years, you have mastered the art of traveling in a single path through the sloppy rooms and closing the doors behind you. Your biggest problem is determining whether it is possible to find a path through the sloppy rooms where you: 

  1. Always shut open doors behind you immediately after passing through 
  2. Never open a closed door 
  3. End up in your chambers (room 0) with all doors closed 

In this problem, you are given a list of rooms and open doors between them (along with a starting room). It is not needed to determine a route, only if one is possible. 

Input

Input to this problem will consist of a (non-empty) series of up to 100 data sets. Each data set will be formatted according to the following description, and there will be no blank lines separating data sets. 
A single data set has 3 components: 

  1. Start line - A single line, "START M N", where M indicates the butler's starting room, and N indicates the number of rooms in the house (1 <= N <= 20). 
  2. Room list - A series of N lines. Each line lists, for a single room, every open door that leads to a room of higher number. For example, if room 3 had open doors to rooms 1, 5, and 7, the line for room 3 would read "5 7". The first line in the list represents room 0. The second line represents room 1, and so on until the last line, which represents room (N - 1). It is possible for lines to be empty (in particular, the last line will always be empty since it is the highest numbered room). On each line, the adjacent rooms are always listed in ascending order. It is possible for rooms to be connected by multiple doors! 
  3. End line - A single line, "END" 

Following the final data set will be a single line, "ENDOFINPUT". 

Note that there will be no more than 100 doors in any single data set.

Output

For each data set, there will be exactly one line of output. If it is possible for the butler (by following the rules in the introduction) to walk into his chambers and close the final open door behind him, print a line "YES X", where X is the number of doors he closed. Otherwise, print "NO".

Sample Input

START 1 2
1

END
START 0 5
1 2 2 3 3 4 4




END
START 0 10
1 9
2
3
4
5
6
7
8
9

END
ENDOFINPUT

Sample Output

YES 1
NO
YES 10

Source



二 分析

无向图的欧拉路径/回路判定。这题蛋疼的地方在于读入,原先在34行处我用getchar()函数处理读入m,n后的回车符,在mac上代码行为正常,但是在windows无法正确读入。替换成getline(cin, s)就AC了。这题的输入处理挺麻烦,我一开始在读邻接表时是读取一行再手动split的。后来看到一种stringstream的写法,觉得挺优美的,详见代码。


三 代码

Memory: 296K Time: 1860MS Language: C++ Result: Accepted

/* 
AUTHOR: maxkibble 
LANG: C++ 
PROB: poj 1300 Door Man
*/

#include<iostream>
#include<sstream>
#include<vector>
#include<cstring>
#include<cstdio>

using namespace std;

#define LOCAL
#define pb push_back

int main() {
#ifdef LOCAL
    freopen("1.in", "r", stdin);
#endif
    ios::sync_with_stdio(false);

    string s;
    stringstream cc;
    int m, n, k, cnt, odd, degree[25];

    while(true) {
        memset(degree, 0, sizeof(degree));
        cnt = odd = 0;
        cin >> s;
        if(s == "ENDOFINPUT") break;
        cin >> m >> n;
        getline(cin, s);
        for(int i = 0; i < n; i++) {
            getline(cin, s);
            cc << s;
            while(cc >> k) {
                degree[k]++;
                degree[i]++;
                cnt++;
            }
            cc.clear();
        }

        for(int i = 0; i < n; i++) {
            if(degree[i] % 2 == 1)
                odd++;
        }
        if((m == 0 && odd == 0) || (m != 0 && odd == 2))
            cout << "YES " << cnt << endl;
        else
            cout << "NO" << endl;
        cin >> s;
    }
    return 0;
}



基于微信小程序的扫码签到系统源码 大等于jdk1.8,大于mysql5.5,idea(eclipse),微信开发者工具。代码注释齐全,没有多余代码,适合学习(毕设),二次开发,包含论文技术相关文档。签到管理:新增签到,点击查看码展示二维码(有时效性)springboot mybatis 小程序。签到管理:查看用户创建的签到,可删除。用户管理:查看注册用户信息,及删除。签到记录:查看用户签到记录:可删除。个人信息:展示个人信息,可修改。统计分析:查看用户,签到数量。签到记录:查看用户签到记录。登录注册(含授权登录)我的签到:查看签到记录。 阅读详情

相关推荐

2023东华大学机试OJ进阶版1-81题

先排序。每次找两个最小的数,把其中一个置为两数之和,并累加这个和值,另一个数置为-1,然后再排序,重复操作,直到只剩下一个数。105。

m0_49263811的博客 2796

POJ-1300(汉密尔顿回路)

题目:http://poj.org/problem?id=1300 分析:简单的汉密尔顿回路问题,需要注意的是要回到node 0,因此需要判断在有两个奇度node时,start node必须是非0的那个,没有判断连通性,1A,看了discuss之后,发现竟然“判断连通性会WA,不判断就AC”,也是醉了 #include #include #include #include us

还有多远 708

点云图的学习

一。点云地图拼接 1.1 配置运行环境 首先配置安装opencv3,安装完成后如下图: 然后配置点云图工具pcl,直接使用apt即可安装,安装后如下图: 最后使用点云工具观察点云图: 1.2 原理解析 总的来说由多角度拍摄图片拼接为点云3D图,是通过相机的内参,将像素坐标转化为相机坐标,再通过外参将相机坐标转化为世界坐标系,然后将每张图片的像素绘制填充于同一个世界坐标系下面,形成点云3D图。...

ff_xun的博客 1万+

POJ 1300 判断是否存在欧拉回路(包含定理)

题目描述: 你是一座大庄园的管家。庄园有很多房间,编号为0、1、2、3,...。你的主人是一个心不在 焉的人,经常沿着走廊随意地把房间的门打开。多年来,你掌握了一个诀窍:沿着一个通道,穿 过这些大房间,并把房门关上。你的问题是能否找到一条路径经过所有开着门的房间,并使得: 1) 通过门后立即把门关上; 2) 关上了的门不再打开; 3) 最后回到你自己的房间(房间0),并且所有的门都已经

liwei的专栏 2586

利用Cesium引擎实现大疆智图B3DM三维模型的高效加载与可视化

本文详细介绍了如何利用Cesium引擎高效加载与可视化大疆智图B3DM三维模型。通过性能优化实战和典型应用场景分析,帮助开发者掌握模型预处理、渲染参数调优及高级功能实现技巧,提升大规模倾斜摄影数据的网页端展示效率。

weixin_29231725的博客 219

SRAM Bank数量配置:性能、面积与功耗的权衡指南

SRAM(静态随机存取存储器)是芯片设计中的关键存储单元,其Bank数量配置直接影响访问延迟、吞吐率、功耗和面积。Bank切分通过将存储阵列分区,缩短位线和字线延迟,从而提升性能,但会增加外围电路开销。合理配置Bank数量可优化PPA(性能、功耗、面积),在28nm和16nm工艺下,2个Bank通常是性价比最高的选择。本文基于实测数据,探讨不同场景下的Bank配置策略,帮助工程师避免常见误区,提升设计效率。

weixin_27230891的博客 179

POJ1300 Door Man

无向图欧拉回路判定。

H992109898的博客 497

踩坑实录:C#上位机YOLOv11从2FPS到45FPS,ONNX Runtime GPU加速全解析

算力迁移:将推理核心从CPU迁移至GPU(核心提速手段);内存复用:避免重复分配/释放内存,减少GC压力;维度固定:工业场景固定输入分辨率,关闭动态维度;资源限制:合理限制GPU/CPU/内存占用,避免资源耗尽;解耦设计:推理线程与UI线程解耦,避免跨线程问题。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 572

POJ 1300 欧拉通路&欧拉回路

系统的学习一遍图论! 先介绍一些概念。 无向图: G为连通的无向图,称经过G的每条边一次并且仅一次的路径为欧拉通路。 如果欧拉通路是回路(起点和终点相同),则称此回路为欧拉回路。 具有欧拉回路的无向图G称为欧拉图。 有向图: D为基图连通的有向图,则称经过D的每一条边并且仅一次的路径为有向欧拉通路。 如果该通路是回路,则称为有向欧拉回路。 具有有向欧拉回路的有向图D称为有

just_water 1421

Unet++改进33:添加ConvolutionalGLU(2024最新改进方法)|紧凑的网络结构和高效的运算

由于残差连接的深度退化效应,许多依赖堆叠层进行信息交换的高效视觉变形模型往往不能形成足够的信息混合,导致视觉感知不自然。为了解决这个问题,在本文中,我们提出了聚合注意力,这是一种基于仿生设计的令牌混合器,它模拟生物中央凹视觉和连续眼运动,同时使特征映射上的每个令牌具有全局感知。此外,我们结合了可学习的令牌,与传统的查询和键交互,这进一步多样化了亲和矩阵的生成,而不仅仅依赖于查询和键之间的相似性。我们的方法不依赖于堆叠进行信息交换,从而有效地避免了深度退化,实现了自然的视觉感知。

AIcurator的博客 683

利用人工神经网络在Abaqus中实现本构模型的网格粗化计算框架:详细指南与实践

在这篇文章中,我们详细介绍了如何在Abaqus中实现基于人工神经网络(ANN)的本构模型以进行网格粗化的计算框架。我们通过两个主要模块——数据生成器模块和ANN训练模块,实现了这一计算框架,并将训练好的ANN集成到Abaqus的用户材料子程序(UMAT)中,创建了一个基于ANN的本构模型。我希望这篇文章能帮助到那些希望在Abaqus中实现基于ANN的本构模型的读者,同时,我也非常欢迎大家提出宝贵的意见和建议,让我们共同进步。

qq_38334677的博客 1715

No.17 POJ1300 判断欧拉回路

欧拉回路: 两种情况 所有点度为偶数,且出发点一定是终止点 有两个奇数度点,分别为出发点和终止点 // ShellDawn // POJ1300 // No.17 #include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #define MM(x) me...

ShellDawn的博客 241

Android 14安装的APK默认允许运行时权限

本文介绍了在Android系统中实现安装应用后自动授予运行时权限的方法。通过在安装完成广播中检测应用安装状态,调用新增的DefaultPermissionGrantPolicy.grantAppRuntimePermissions()函数来授予常规权限,并使用allowSpecialPermission()处理特殊权限(如安装未知应用和悬浮窗权限)。文章详细说明了如何修改DefaultPermissionGrantPolicy类,添加grantAppRuntimePermissions和grantRunti

热衷于Android Framework和系统APP的修改经验分享 683

[欧拉回路] poj 1300 Door Man

题目链接: http://poj.org/problem?id=1300 Door Man Time Limit:1000MS Memory Limit:10000K Total Submissions:2137 Accepted:857 Description You a...

aodiyi6351的博客 122

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

poj1300 door man

Problem A Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 20000/10000K (Java/Other) Total Submission(s) : 8   Accepted Submission(s) : 5 Problem Description You are a butler in a large man

wust_towave的专栏 464

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

POJ-1300 Door Man

Door Man Time Limit: 1000MS   Memory Limit: 10000K       Description You are a butler in a large mansion. This mansion has so many rooms that they are merely referred to

JSure的代码库 871

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

POJ 1300 Door Man

判断是否欧拉回路。 很蛋疼的一道题,加上DFS判所有点是否连通就无限WA。(并查集也可判) 直接定理就AC了。都不知道所有点是不是在一个 连通块里面。 然后他们说:Your master is a particularly absent-minded lout and continually leaves doors open throughout a particular floo

自己选择的路,跪着也要走完。 1205

Door Man poj 1300

题目大意: 沿着一个通道,穿过这些大房间,并把房门关上。你的问题是能否找到一条路径经过所有开着门的房间,并使得: 1)  通过门后立即把门关上; 2)  关上了的门不再打开; 3)  最后回到你自己的房间(房间0),并且所有的门都已经关闭了。       分析:本题实际上是判断一个图中是否存在欧拉回路或欧拉通路,要分两种情况考虑: 1)如果所有的房间都有偶数个门(通往其他房间),那么有

Abner 1227

POJ 1300 Door Man【欧拉回路】

题目链接题目描述:你是一座大庄园的管家。庄园有很多房间,编号为0、1、2、3,...。你的主人是一个心不在焉的人,经常沿着走廊随意地把房间的门打开。多年来,你掌握了一个诀窍:沿着一个通道,穿过这些大房间,并把房门关上。你的问题是能否找到一条路径经过所有开着门的房间,并使得:1) 通过门后立即把门关上;2) 关上了的门不再打开;3) 最后回到你自己的房间(房间0),并且所有的门都已经关闭了。在本题中...

小康的博客 275

POJ1300 Door Man —— 欧拉回路(无向图)

题目链接:http://poj.org/problem?id=1300 Door Man Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 2899   Accepted: 1176 Description You are a butler in

A man can be destroyed, but not defeated. 421

[POJ1300]Door Man 做题笔记

题目链接:http://poj.org/problem?id=1300 这题是比较裸的欧拉回路与欧拉通路的判定公式的应用,但这题最可怕的应该是它的读入。。。 Hint:欧拉回路/欧拉通路要求基图联通,意思是不存在孤立的点,而不是整个图只有一个联通块。#include <cstdio> #include <cstring> #include <algorithm> using namespace

mhlwsk的博客 589

poj 1300 Door Man

Door Man Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 2135   Accepted: 855 Description You are a butler in a large mansion. This mansion has so many roo

GAUSS_CLB 676

poj Door Man(1300)

Door Man Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 2057   Accepted: 813 Description You are a butler in a large mansion. This mansion has so many rooms

码码要洗手 619

poj 1300 Door Man

Door Man Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 1717   Accepted: 647 Description You are a butler in a large mansion. This mansion has so many rooms

记录成长的点点滴滴. . . . . 1079
上一篇: poj 2442 Sequence
下一篇: cf 906A Shockers
max_kibble
博客等级 码龄11年 2粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值