UVa10129 判断有向图中是否存在欧拉回路

博客探讨了如何将单词首尾字母转化为有向图,并通过判断图中是否存在欧拉回路的问题。文章指出,有向图存在欧拉回路的条件是底图连通且所有节点入度等于出度,或特定节点出入度相差1。无向图的情况则有所不同。在实现DFS过程中,作者遇到了错误,导致一直得到错误结果。
摘要由CSDN通过智能技术生成

只需要记录每个单词的首尾字母,把每个字母当做图中的点,两个字母出现在一个单词首尾当做一条有向边,这样就成了求图中是否存在欧拉回路,即能遍历图中所有的边而且不重复。

有向图中存在欧拉回路的条件是:底图是连通的,所有点的入度=出度、或者一个点出度=入度+1(开始点),一个点入度=出度+1(结束点)。

无向图中存在欧拉回路的条件是:所有点的边是偶数、有两个点的边是奇数

开始在对图进行dfs的时候,把点的数目当成了n,一直WR。

#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<string>
#include<map>
#include<set>
#include<algorithm>
#include<vector>
#include<stack>
#include<sstream>
#define ll long long
using namespace std;
/**********************************************************/
const int M_NUM_MAX = 100000+10;
const int M_INT_MAX = 0x7fffffff;
const double M_DBL_MAX = 1.7976931348623158e+308;
const double M_DBL_MIN = 2.2250738585072014e
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值