Euler算法
2016-04-16 11:52
134 查看
Euler:
欧拉回路是值在图G中恰好可以经过每条边一次。俗称一笔画问题。算法具体描述如下:
假设有一张无向图G,且必有一个解,无向图中若存在欧拉回路,则必须所有顶点度数都为偶数,或者有且仅有两个顶点度数为奇数来做为起终点,才可以有欧拉回路,因规定必有一条欧拉回路,则有一个度数奇数的点则可以马上从这个点dfs了,因为故有下一个奇数,且从下一个奇数开始便不符合字典序了。如若没有奇数则从1开始dfs。
代码如下:
for i:=1 to max do if b[k,i]>0 then begin dec(b[k,i]); dec(b[i,k]); dfs(i); end; inc(count); a[count]:=k;
最后输出a数组就是经过的点了。
相关文章推荐
- Code Forces 644A Parliament of Berland
- (6)关于%格式字符的
- !和 ?的用法总结
- 【Unity】6.1 Unity中的C#脚本基础知识
- 一个求迷宫入口到出口最近距离的程序 JAVA版本
- 离合器 油门 刹车使用要领
- ios多线程操作(四)—— GCD核心概念
- Github建立自己的个人网站,不需要买域名啦!
- Android Binder机制(2) ContextManager注册过程分析
- 项目管理之如何控制项目进度和质量
- Code Forces 644B Processing Queries
- FZU 2140 Forever 0.5 (几何_思维)
- openstack中region、az、host aggregate、cell 概念
- 计算机组成简介
- ios多线程操作(三)—— 线程通讯
- Code Forces 644B Processing Queries
- Struts2 入门学习笔记(四)——输入校验
- Light OJ 1302 Independent Attacking Zones(分治或DP)
- ios多线程操作(二)—— NSThread的应用
- LeetCode——023