欧拉路的性质
奇点:从该点出发所连的边数为奇数,则称该点为奇点
存在欧拉路的条件:图是连通的,并且只有两个奇点
证明:对于欧拉路,除了起点和终点外,每个点都要进入并出去一次(或多次),显然只有两个奇点。
存在欧拉回路的条件:图是连通的,并且没有奇点
证明:一旦进入某个点,就必须要从该点出来,入度和出度相同,显然没有奇点。
#include<iostream>
using namespace std;
const int maxn = 1000 + 5;
int G[maxn][maxn];
int path[maxn];
int deg[maxn];
int N, M;
void print(void)
{
for (int i = 1; i < M + 1; i++)
{
printf("%d--", path[i]);
}
printf("%d\n", path[M + 1]);
}
void dfs(int i, int step)
{
path[step] = i;
if (step == M + 1)
{
print();
return;
}
for (int j = 1; j <= N; j++)
{
if (G[i][j])
{
G[i][j] = G[j]