欧拉路:欧拉路是指从图中任意一个点开始到图中任意一个点结束的路径,并且图中每条边通过的且只通过一次。
1.无向连通图存在欧拉路的条件:
所有点度都是偶数,或者恰好有两个点度是奇数,则有欧拉路。若有奇数点度,则奇数点度点一定是欧拉路的起点和终点,否则可取任意一点作为起点。
2.有向连通图存在欧拉路的条件(满足任一条件即可):
(入度:有向图中某点作为图中边的 终点 的次数之和)
(出度:有向图中某点作为图中边的 起点 的次数之和)
- 每个点的入度等于出度,则存在欧拉回路(任意一点有度的点都可以作为起点)
- 除两点外,所有入度等于出度。这两点中一点的出度比入度大,另一点的出度比入度小,则存在欧拉路。取出度大者为起点,入度大者为终点。
常见的一笔画问题,单词接龙问题,走路问题
如果需要输出路径,直接用深搜方法,不需要用并查集方法判断,直接判断n(路径数)==cnt(搜到的路)
题目:
无向欧拉路:
无向欧拉路和字典树结合: Colored Sticks (poj-2513,字典树,欧拉图)
图几笔画(判欧拉路,非欧拉路笔画数): Ant Trip (hdu-3018,并查集,连通图,欧拉路)
无向欧拉回路,(路号)字典序输出:John's trip (poj-1041,欧拉回路,字典序最小路径)
有向欧拉路:
有向字典序输出欧拉路(注意顶点不同情况):Catenyms (poj2337,字典序输出欧拉路)
判有向欧拉路:Play on Words (poj-1386,有向欧拉路,欧拉回路)
有向欧拉回路输出:Watchcow (欧拉回路,poj-2230)