首页 > 其他 > 详细

欧拉回路

时间:2014-11-15 21:52:50      阅读:346      评论:0      收藏:0      [点我收藏+]

定义

       欧拉回路:图G,若存在一条路,经过G中每条边有且仅有一次,称这条路为欧拉路,如果存在一条回路经过G每条边有且仅有一次,称这条回路为欧拉回路。具有欧拉回路的图成为欧拉图。

判断原理

有向图:图连通,有一个顶点出度大入度1,有一个顶点入度大出度1,其余都是出度=入度。
无向图:图连通,只有两个顶点是奇数度,其余都是偶数度的。

常用处理流程

1.使用DFS或并查集判断连通性
2.判定度数是否满足条件 
3.获取回路
void euler(int u){
    for(int v = 0;v < n; v++) if(G[u][v] && !vis[u][v]){
       vis[u][v] = vis[v][u] = 1 /* vis[u][v] = 1 for 有向图*/
       euler(v);
       cout << u << "->" "v" << endl;   
    } 
}

欧拉回路

原文:http://my.oschina.net/u/572632/blog/345131

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!