欧拉回路模板

 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<<"\n";
10         }
11     }
12 }

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

上面适用于含重边的图。

刘汝佳紫书:

 

posted @ 2018-09-03 15:29  _努力努力再努力x  阅读(428)  评论(0编辑  收藏  举报