分析
感觉从高中开始打OI以来,已经不知道多少次接触这个东西了,还是不长记性,这次务必记住。
无向图
欧拉路径:所有点的度数都为偶数或者存在两个点的度数为奇数
欧拉回路:所有点的度数都为偶数
有向图
欧拉路径:所有点的入度都等于出度或者存在两个点,一个起点(出度减入度等于1),一个终点(入度减出度等于1)
欧拉回路:所有点的入度都等于出度
例题
acwing 1184.欧拉回路
就是先判断有没有回路,通过dfs的方式遍历,有很多需要注意的地方,也是边看题解边码出来的,用一个引用消自环的方法非常巧妙,注意边倒着存。
#include <bits/stdc++.h>
using namespace std;
const int N = 2 * 1e5 + 5,M = 4 * 1e5 + 5;
int e[M],ne[M],h[N],idx;
int din[N],dout[N];
int ans[M];
bool used[M];
int ver,cnt;
int n,m;
void add(int fr,int to