题目概述
判断无向图和有向图是不是欧拉回路。如果是,求出任意一条欧拉回路。
解题报告
判断欧拉回路:
- 无向图:每个点的度数都是偶数。
- 有向图:每个点的出度都等于入度。
证明?我不会啊!怎么求欧拉回路呢?因为已经确定了是欧拉回路,所以我们可以直接DFS瞎搞。随便从一个点开始DFS,一条边走过后就删除。回溯时将其入队。最后的队列反过来就是答案。
原理:最后的队列是返回路径,所以反过来就是答案。证明?我不会啊!
示例程序
#include<cstdio>
#include<cctype>
#include<cstring>
using namespace std;
const int maxn=100000,maxm=400000;
int tp,n,m,fa[maxm+5],ans[maxm+5],f[maxn+5],g[maxn+5];
int E,lnk[maxn+5],son[maxm+