标签:style blog http color sp 2014 问题 c log
欧拉回路的简单定义:对一个连通图来说,如果遍历这个图的时候可以把每条边都遍历一次,并且只能遍历一次,那么此图便有欧拉回路。
上面的红体字也就说明了判断一个图是否有欧拉回路的关键:
1. 必须是连通图 2.每条边必须且只能遍历一次。
那么首先我们要解决第一个问题: 如何判断一个图是否连通呢?
这里提供两种解决方案: 1.dfs深搜 看看是不是能够访问到所有的顶点。如果能,则连通。反之,则不能;
2. 通过并查集。 将所有顶点加入集合后,判断一共有多少个祖先,如果祖先数大于1,则不是连通图,如果等于1 则连通。
下面,我们来考虑第二个问题,如何检测每条边遍历一次呢?
有向图: 入度 = 出度
无向图: 所有顶点的度为偶数
仔细想一想便可以得到这个结论。
再附上我的错误思路:
一开始我以为可以通过直接判断一个图的度来是否是欧拉回路,我以为也可以通过度是否为0来判断是否连通,可是这样不对~下面的图就是反例
标签:style blog http color sp 2014 问题 c log
原文地址:http://www.cnblogs.com/ltwy/p/4008597.html