ACM-ICPC 培训资料汇编
( 4)
图论分册
(版本号 1.0.0)
哈尔滨理工大学 ACM-ICPC 集训队
2012 年 12 月
哈尔滨理工大学 ACM-ICPC 培训资料汇编
序
2012 年 5 月,哈尔滨理工大学承办了 ACM-ICPC 黑龙江省第七届大学生程序设计竞
赛。做为本次竞赛的主要组织者,我还是很在意本校学生是否能在此次竞赛中取得较好成
绩,毕竟这也是学校的脸面。因此,当 2011 年 10 月确定学校承办本届竞赛后,我就给齐
达拉图同学很大压力,希望他能认真训练参赛学生,严格要求受训队员。当然,齐达拉图
同学半年多的工作还是很有成效,不仅带着黄李龙、姜喜鹏、程宪庆、卢俊达等队员开发
了我校的 OJ 主站和竞赛现场版 OJ,还集体带出了几个比较像样的新队员,使得今年省赛
我校取得了很好的成绩(当然,也承蒙哈工大和哈工程关照,没有派出全部大牛来参
赛)。
在 2011 年 9 月之前,我对 ACM-ICPC 关心甚少。但是,我注意到我校队员学习、训练
没有统一的资料,也没有按照竞赛所需知识体系全面系统培训新队员。 2011-2012 年度的
学生教练们做了一个较详细的培训计划,每周都会给 2011 级新队员上课,也会对老队员
进行训练,辛辛苦苦忙活了一年——但是这些知识是根据他们个人所掌握情况来给新生讲
解的,新生也是杂七杂八看些资料和做题。在培训的规范性上欠缺很多,当然这个责任不
在学生教练。 2011 年 9 月,我曾给老队员提出编写培训资料这个任务,一是老队员人数
少,有的还要去百度等企业实习;二是老队员要开发、改造 OJ;三是培训新队员也很耗费
精力,因此这项工作虽很重要,但却不是那时最迫切的事情,只好被搁置下来。
2012 年 8 月底, 2012 级新生满怀梦想和憧憬来到学校,部分同学也被 ACM-ICPC 深深
吸引。面对这个新群体的培训,如何提高效率和质量这个老问题又浮现出来。市面现在已
经有了各种各样的 ACM-ICPC 培训教材,主要算法和解题思路都有了广泛深入的分析和讨
论。同时,互联网博客、 BBS 等中也隐藏着诸多大牛对某些算法的精彩论述和参赛感悟。
我想,做一个资料汇编,采撷各家言论之精要,对新生学习应该会有较大帮助,至少一可
以减少他们上网盲目搜索的时间,二可以给他们构造一个相对完整的知识体系。
感谢 ACM-ICPC 先辈们作出的杰出工作和贡献,使得我们这些后继者们可以站在巨人
的肩膀上前行。
感谢校集训队各位队员的无私、真诚和抱负的崇高使命感、责任感,能够任劳任怨、
以苦为乐的做好这件我校的开创性工作。
唐远新
2012 年 10 月
哈尔滨理工大学 ACM-ICPC 培训资料汇编
编写说明
本资料为哈尔滨理工大学 ACM-ICPC 集训队自编自用的内部资料,不作为商业销售目
的,也不用于商业培训,因此请各参与学习的同学不要外传。
本分册大纲由黄李龙编写,内容由程宪庆、周洲等分别编写和校核。
本分册内容大部分采编自各 OJ、互联网和部分书籍。在此,对所有引用文献和试题的
原作者表示诚挚的谢意!
由于时间仓促,本资料难免存在表述不当和错误之处,格式也不是很规范,请各位同
学对发现的错误或不当之处向[email protected]邮箱反馈,以便尽快完善本文档。在此对
各位同学的积极参与表示感谢!
哈尔滨理工大学在线评测系统( Hrbust-OJ)网址: http://acm.hrbust.edu.cn,欢迎各位
同学积极参与AC。
国内部分知名 OJ:
杭州电子科技大学: http://acm.hdu.edu.cn
北京大学: http://poj.org
浙江大学: http://acm.zju.edu.cn
以下百度空间列出了比较全的国内外知名 OJ:
http://hi.baidu.com/leo_xxx/item/6719a5ffe25755713c198b50
哈尔滨理工大学 ACM-ICPC 集训队
2012 年 12 月
哈尔滨理工大学 ACM-ICPC 培训资料汇编
- III -
目 录
序…….......................................................................................................................................... I
编写说明..................................................................................................................................... II
第 3 章 图论................................................................................................................................5
3.1 图的基本概念...................................................................................................................5
3.1.1 图的表示....................................................................................................................5
3.1.2 广度优先搜索............................................................................................................6
3.1.3 深度优先搜索............................................................................................................7
3.2 拓扑排序...........................................................................................................................7
3.2.1 基本原理....................................................................................................................7
3.2.2 模板代码....................................................................................................................8
3.2.3 经典题目....................................................................................................................9
3.3 活动网络(AOE网络)......................................................................................................10
3.4 最小生成树Prim .............................................................................................................11
3.4.1 基本原理..................................................................................................................11
3.4.2 模板代码..................................................................................................................12
3.4.3 经典题目..................................................................................................................13
3.5 最小生成树Kruskal ........................................................................................................17
3.5.1 基本原理..................................................................................................................17
3.5.2 模板代码..................................................................................................................17
3.5.3 经典题目..................................................................................................................18
3.6 最短路Dijkstra................................................................................................................21
3.6.1 基本原理..................................................................................................................21
3.6.2 模板代码..................................................................................................................22
3.6.3 经典题目..................................................................................................................25
3.7 最短路Bellman-Ford ......................................................................................................28
3.7.1 基本原理..................................................................................................................28
3.7.2 模板代码..................................................................................................................29
3.7.3 经典题目..................................................................................................................31
3.8 所有顶点之间的最短路 Floyd......................................................................................34
3.8.1 基本原理..................................................................................................................34
3.8.2 模板代码..................................................................................................................34
3.8.3 经典题目..................................................................................................................34
3.9 差分约束与最短路.........................................................................................................37
3.9.1 基本原理..................................................................................................................38
3.9.2 解题思路..................................................................................................................38
3.9.3 经典题目..................................................................................................................38
3.10 最大流...........................................................................................................................39
3.10.1 基本原理................................................................................................................40
3.10.2 解题思路................................................................................................................41
3.10.3 模板代码................................................................................................................41
3.10.4 经典题目................................................................................................................44
3.11 最小费用最大流...........................................................................................................49
哈尔滨理工大学 ACM-ICPC 培训资料汇编
- IV -
3.11.1 基本原理................................................................................................................49
3.11.2 模板代码................................................................................................................49
3.11.3 经典题目................................................................................................................50
3.12 有上下界的最大流.......................................................................................................52
3.12.1 基本原理................................................................................................................52
3.12.2 经典题目................................................................................................................52
3.13 树的最小支配集,最小点覆盖与最大独立集...........................................................56
3.13.1 基本原理................................................................................................................56
3.13.2 模板代码................................................................................................................58
3.14 二分图最大匹配...........................................................................................................61
3.14.1 基本原理................................................................................................................61
3.14.2 解题思路................................................................................................................62
3.14.3 模板代码................................................................................................................63
3.14.4 经典题目................................................................................................................63
3.15 强连通...........................................................................................................................66
3.15.1 基本原理................................................................................................................66
3.15.2 解题思路................................................................................................................67
3.15.3 模板代码................................................................................................................69
3.15.4 经典题目................................................................................................................70
3.16 重连通...........................................................................................................................73
3.16.1 基本原理................................................................................................................74
3.16.2 解题思路................................................................................................................74
3.16.3 模板代码................................................................................................................75
3.16.4 经典题目................................................................................................................76