poj1932 XYZZY (Bellman-Ford + Floyd! 经典!)
不得不说:本题很经典,用到了单元最短路径中的两个主要算法:Bellman-Ford + Floyd,只差Dijkstra、还有什么差分约束了。应该再好好消化巩固。
不得不看:1、http://zh.wikipedia.org/wiki/Bellman-Ford算法
2、http://www.nocow.cn/index.php/Bellman-Ford%E7%AE%97%E6%B3%95
3、http://www.nocow.cn/index.php/SPFA
题 意:一人开始有能量100,有n个房间,走到每个房间都能够增加或减少一定的能量(若该房间所存为负则减少,反 之),若在途中能量耗尽(<=0),则hopeless,反之winnable。
思 路:
一、通过floyd传递闭包,求证是否存在原点到终点的一条路径,若无,直接hopeless;
二、Bllman-Ford算法,这个算法原本是用来求有负权边的情况下图的最短路径(负环),本题可以稍微改下,求正 环。分情况:1、若存在若在求松弛过程中,已经能够到达终点,winnable;2、若存在正环,winnable,反之 hopeless。
学习点:Bellman-Ford + Floyd
注意点:在Floyd后,可以去掉不能够到达终点的点,即去除无效分支。
源代码:

浙公网安备 33010602011771号