如果图(G)中的一个路径包括每个边恰好一次,则该路径称为欧拉路径
该路径是通路,则称为欧拉通路,是回路,则称为欧拉回路
无向图
有零个或两个奇数度的点,则存在欧拉通路
每个点的度数都是偶数,则存在欧拉回路
有向图
有一个点出度比入度大(1),有一个点入度比出度大(1),除这两点外,其余点每个点的出度和入度相等或每个点的出度和入度相等,则存在欧拉通路
每个点的出度和入度相等,则存在欧拉回路
可以通过(dfs)来找欧拉回路方案,可以弧优化
(code:)
void dfs(int x)
{
for(int i=1;i<=n;++i)
{
if(e[x][i])
{
e[x][i]=e[i][x]=0;
ed[++cnt]=(edge){x,i};
dfs(i);
}
}
st[++top]=x;
}