欧拉回路模板

 1 void euler(int u)
 2 {
 3     for(int v = 1; v <= n; v++)
 4     {
 5         if(Map[u][v])
 6         {
 7             Map[u][v]--, Map[v][u]--;
 8             euler(v);
 9             cout<<u<<" "<<v<<"
";
10         }
11     }
12 }

它同时适用于欧拉道路和回路。但如果需要打印的是欧拉道路,在主程序中调用时,参数必须是道路的起点。另外,打印的顺序是逆序的,因此在真正使用这份代码 时,应当把printf语句替换成一条push语句,把边(u,v)压入一个栈内。

上面适用于含重边的图。

刘汝佳紫书:

原文地址:https://www.cnblogs.com/fzl194/p/9578791.html