POJ1300 Door Man 欧拉回路的判断

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

题目链接:

1300




题意:

一个房子中有(编号0~N-1)N个房间和X个连通两个房间的门,所有房间都是连通的,每次经过一扇门时这扇门会被关闭。问:一个人从M号房间出发能否成功到达0号房间并关闭所有门。




题解:

此题是欧拉回路的入门题,首先学习无向图欧拉回路的判断定理:

无向图G 存在欧拉通路的充要条件是:G 为连通图,并且G 仅有两个奇度结点(度数为奇数的顶点)或者无奇度结点。


该题是固定起点和终点的的无向图。

所以能构成欧拉回路只有两种情况:

1 所有点的度数为偶数

2 起点终点度数为奇数 其他均为偶数



代码:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
    int degree[30];
    int m,n,i,j,s,odd,even;
    char str[1005],str2[1005];
    while(scanf("%s",str)&&strcmp(str,"ENDOFINPUT")!=0)
    {
        s=odd=even=0;
        memset(degree,0,sizeof(degree));
        scanf("%d%d",&m,&n);
        getchar();
        for(i=0; i<n; i++)
        {
            gets(str2);
            for(j=0; j<strlen(str2); j++)
                if(str2[j]>='0'&&str2[j]<='9')
                {
                    s++;
                    degree[i]++;
                    degree[str2[j]-'0']++;
                }
        }
        scanf("%s",str);
        for(i=0; i<n; i++)
        {
            if(degree[i]%2==0)
                even++;
            else
                odd++;
        }
        if((odd==0&&m==0)||(odd==2&&degree[m]%2==1&&degree[0]%2==1&&m!=0))
            cout<<"YES"<<' '<<s<<endl;
        else
            cout<<"NO"<<endl;
    }
    return 0;
}




[欧拉图] poj 1300 Door Man /* [欧拉图] poj 1300 Door Man 判断一个图是否存在欧拉回路欧拉路径,数据很水,不用判连通性 欧拉定理, 无向图中如果所有顶点的度数都为偶数, 或者只有两个点的度数为奇数, 那么这个图存在欧拉回路。 于是,这是一道考输入的题目 */ #include #include #define N 101 int main() { char s 阅读详情

相关推荐

POJ-1300-Door Man

比较简单的欧拉回路判定,只是需要特殊处理下输入 代码: #include #include #include using namespace std; const int maxn=1001; char str[maxn]; int n,m,cnt[31]; int main() { while(gets(str)!=NULL) { if(!strcmp(str,"ENDOF

z309241990的专栏 998

poj 1300 Door Man(欧拉回路判定)

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

weixin_30325487的博客 166

POJ1300 欧拉回路 解题报告

Door ManDescriptionYou 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 lo

onepointo 697

Door ManPOJ-1300

Problem 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-min...

Alex_McAvoy的博客 629

POJ1300 Door Man 无向图欧拉通路

判断图中是否存在欧拉回路,终点规定为0,起点指定。 图为无向图,所以判断方法是如果不存在度数为奇数的节点(房间),并且起点为0则输出YES X。如果存在2个奇数度数的节点,并且分别为0 和 S(S!=0)则存在欧拉回路。其他情况都不符合规定。 这道题比较简单,就是输入要注意使用cin.getline()。 Door Man Time Limit: 1000MS   Me

1043

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. 420

[欧拉回路] 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的博客 120

POJ 1300 Door Man欧拉回路

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

小康的博客 274

Door Man POJ - 1300欧拉回路的简单应用)

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

JSASL的博客 352

POJ 1300 Door Man(欧拉回路判定)

POJ 1300 Door Man(欧拉回路判定) http://poj.org/problem?id=1300 题意:给你N个房间(图节点)以及房间之间的门(图的边),且给你初始的房间号M,问你从初始房间走,可不可以经过每个门仅1次,最后到达0号房间.且所有的门都被你走过1次? 分析:仔细一看,其实这个问题就是判定是否存在无向图的欧拉回路或通路的问题.本题要理清所有可能的情况,理清了之后就

code 1364

POJ 1300 Door Man欧拉回路_格式控制*)

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 lou

AK_HuangYC的博客 637

POJ-1300 Door Man

题目大意: 你是一座大庄园的管家,庄园有很多房间,编号从0-n。你需要从m个房间走回到0号房间,并且通过一些房间,在通过这些房间的时候立即把们关上,关上了的门也不能再打开,并且在你回到0号房间的时候,所有的门已经关闭了。问你是否存在这样的路; 解题思路: 这题是道很简单的欧拉通路/欧拉回路判断 我们知道一个定理:无向图G存在欧拉通路的充要条件是:G为联通图,并且G仅有两个奇度数节点或者无奇

Wilbert的博客 488

poj1300 Door Man(欧拉回路判定)

题意:给你N个房间以及房间之间的门,且给你初始的房间号M,问你从初始房间走,可不可以经过每个门仅1次,最后到达0号房间.且所有的门都被你走过1次? 思路:将房间当成顶点,门作为边,转化为判断无向图是否存在欧拉回路或者通路。          所有门都被走一遍,所以任何有门的房间都必须是在同一连通分量:即degree不为0的节点所属并查集唯一.(因为允许存在孤立的一点,房间)    

围巾的ACM博客 554

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的专栏 462

poj1300 Door Man欧拉回路

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

苏苏爱自由 2073

[POJ1300]Door Man 做题笔记

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

mhlwsk的博客 586

Door ManPOJ 1300)---欧拉回路模板套

题目链接 题目描述 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 an...

weixin_43960284的博客 194
上一篇: zoj 3103 Cliff Climbing 优先队列+BFS
下一篇: ZOJ 2027 Traveling fee dp+floyed
Kuro同学
博客等级 码龄12年 119粉丝 233原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值