码迷,mamicode.com
首页 > 其他好文 > 详细

欧拉图

时间:2020-02-09 13:14:07      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:需要   nbsp   ref   欧拉回路   pre   max   void   父节点   别人   

紫书讲到了这,就顺便学了下欧拉图,发现自己菜如依旧。。

题源:https://www.luogu.com.cn/problem/P1341

首先是要判断是否存在欧拉路,需要满足两个条件,一个是连通性,另一个是奇点的个数。连通性看大佬都是用并查集做的,最后判断只有一个父节点即可。

然后就是用Hierholzer算法求欧拉回路的问题。其实只要用dfs就行了,不用开栈,记得倒序存储就可以了。

 

贴一下别人的代码

 

void dfs(int i) { 
    for(int j = 0; j < maxn; j++) {
        if(G[i][j]) {
            G[i][j] = G[j][i] = 0; // 无向图删边
            dfs(j);
        }
    }
    res[n--] = i; // 记录
}

 

欧拉图

标签:需要   nbsp   ref   欧拉回路   pre   max   void   父节点   别人   

原文地址:https://www.cnblogs.com/jionkitten/p/12286840.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!