/**
欧拉路就是一笔画问题,同时会衍生出好多问题
比如:单词接龙,就是给一堆英文单词,问是否能让其首尾相接
排成一列
这样可将每个单词看成一条边,首尾字母看成点,求是否存在一
条欧拉路
一、无向图
欧拉回路:每个顶点入度都是偶数
欧拉路:所有点度数为偶数或者只有两个点度数为奇数
二、有向图
欧拉回路:每个点入度等于出度
欧拉路:每个点入度等于出度或只有一个点入度比出度小1(从这个
点出发),只有一个点出度比入度小1(从这个点结束),其它点
入度等于出度。
例子:按字典顺序输出有向图的欧拉路
struct node {
int u, v;
int vis; //是否访问过,初始为0
int w; //边权,w可以使任意类型,当然也可以使字符串
}edge[eM]; //存边
int n, m; //表示点的个数,边得个数
int in[nM], out[nM], root[nM], path[nM];
//入度,出度,并查集用,记录路径
//初始化,除root,其余都赋值为零
for (int i=0; i<=n; i++)
root[i] = i; //root 初始化,并查集用
//添边操作
int k = 0; //k的个数最后赋给m
void addEdge(int u, int v, int w) {
edge[k].u = u;
edge[k].v = v
欧拉路 / 回路 / 有向/ 无向 / 字典顺序
最新推荐文章于 2022-08-08 11:16:59 发布
博客探讨了欧拉路在无向图和有向图中的条件,包括欧拉回路和欧拉路的定义,并提供了判断欧拉路存在的算法。此外,还介绍了如何按字典顺序输出有向图的欧拉路,涉及并查集和递归等数据结构与算法。
摘要由CSDN通过智能技术生成