欧拉回路
之前的似乎有误,重写了
无向图欧拉回路,圈套圈模板,复杂度线性
其实就是DFS整个图,并在回溯时记录。
需要保证存在欧拉回路
void dfs(int u)
{
for(int &i=fr[u];i!=-1;i=ne[i])
{
if(bk[i/2])
continue;
bk[i/2]=true;
int a=u,b=v[i];
dfs(v[i]);
lu[ls]=a;lv[ls++]=b;
if(i==-1)break;
}
}
由于使用当前弧优化,dfs之后i值可能会改变,因此需要提前把2个端点记下来。
欧拉回路计数:BEST定理
以出发点为根树形图数×(每个点度-1)!×出发点度