最短路小结

来源:互联网 发布:战舰世界mac 国服 编辑:程序博客网 时间:2024/06/05 15:17

更多的题在我的专题了,可以自己去找,希望该文对你们有帮助。

模版和算法详解

Floyd
BellmanFord
Dijkstra

模型

1.Floyd算法的变形:因为Floyd算法的核心是动态规划,所以三层for的功能是很强大的

UVA-10048(两点之间的最长边达到最小)
UVA-125 (两点之间的路径数量)
UVA-104 (floyd的三层表示)
HDU-4034 (floyd的变形)
POJ-3660 (floyd的变形)

2.环:不管是正环还是负环,反正就是环,大部分是负环

UVA-558(求环裸题)
HDU-2647
HDU-1317
UVALIVE-4618(是负环,但并不是能到负无限大的负环)
Lightoj-1221
Lightoj-1108(需要逆向思考)
Lighoj-1074

3.多源点:多个出发点,其实也就是将多个d设置为0的事

HDU-2066
POJ-3268(需要逆向思考)

4.最短路树:何为最短路树,就是对每个点都做一次以该点为源点的最短路,然后纪录下最短路的路径,因为后面会问到,少了哪条边会不会对两点之间的最短路造成影响,这时可以通过最短路树判断,如果该边是最短路树上的边,那么就将该边去掉,再跑一次最短路,判断是否会影响即可。这样可以减少很多次最短路的次数,因为只要判断不是树边的都不用再跑一次

HDU-2433
UVALIVE-4080

5.差分约束系统:什么是差分约束系统,自己百度一下就知道了。给出一系列不等式,要你判断一下这些不等式是否都成立,这就是差分约束系统了,只要出现了负环,就表示不能完全成立了。这种题型,关键在于找到不等式

POJ-3159
POJ-1716
POJ-1364
UVA-11478
UVALIVE-5906

6.对偶图求解最小割:这种题型的话,就是给你很多的边,和很多的点,因为点和边太多了,直接跑最大流会挂掉,所以需要用另外一种思想求出最小割。这时,就要用到对偶图了,将面转成点,边转成两个面的连接边,求出起点到终点的最短路,就是所要的最小割了,这个我专题里面有详细介绍

HDU-3035
HYSBZ-1001
HDU-3870

7.比较好的题目:

UVA-10806 (求不重叠的最短路和)
UVA-10269 (两种最短路的结合)
UVA-10985 (比较抽象的一题)
HDU-1385(输出最短路的最小字典序路径,我的题解比较麻烦)
POJ-1062(有限制的最短路)
UVA-11374(建模恶心)
Lightoj-1099(次短路)
HDU-5521(处理好就可以)
HDU-3313(是否一定要经过?)

0 0
原创粉丝点击