欧拉图的判定
欧拉通路和欧拉回路——必须是存在欧拉回路的图才能称为欧拉图,仅仅是存在欧拉通路不称为欧拉图
无向图的欧拉通路
1.图连通
可以用dfs去判断图连通或者用高效一点的并查集。用dfs的话其实就是遍历一遍图,并记录图有多少个连通分量,一般来说,在主函数中调用了多少次dfs就是有多少个连通分量。当连通分量数为1时说明图连通,大于1则不连通。用并查集的话,判断p[i]=i是否成立,在一个连通分量重只会有一个p[i]=i,若整个图出现多于一次p[i]=i,那么说明该图不止一个连通分量,即不连通
2.度数为奇数的点称为奇点,在无向图欧拉通路中有且仅有两个奇点,这两个奇点必定一个是起点,一个是终点(显然可以交换)。而且其余的点的度数都是偶数
无向图的欧拉回路(即欧拉图)
1.图连通(判定方法一样)
2.所有点的度数都为偶数(从任意一个点出发都能回到自己)
有向图的欧拉通路
1.基图连通
即有向图忽略方向当做无向图一样去判定连通性,判定方法一样
2.必须有一个点的出度比入度大1,这个点作为起点;有一个点的入度比出度大1,这个点作为终点;其余所有点的入度和出度相等
有向图的欧拉回路(即欧拉图)
1.基图连通
2.所有的点的入度和出度相等,从任意一个点出发都可以回到自己
关于输出路径
处处路径一般用递归深搜的方法,但是注意是逆序输出,即在递归函数返回后再输出