现在的位置: 首页 > 综合 > 正文

POJ 1860 Currency Exchange

2013年08月06日 ⁄ 综合 ⁄ 共 1022字 ⁄ 字号 评论关闭

有N种货币,M个货币兑换点,每个兑换点只支持两种货币的兑换,每次兑换需支付手续费

现在有第S种货币V元,问能否经过若干次兑换后得到的第S种货币能否增值,即大于V

这是Bellman-Ford求最小路径的变形,如果能通过兑换是货币增值,则从源点S出发,再回到S时,V[S],变大有两种情况:

1.从S出发,回到S的路径中,除最外圈的环外,有一正环,使得可以通过这个正环得到无穷多的钱

2.从S出发,回到S的路径中,只有一个环,使得回到S时可以增值

这时,我们需要改变松弛条件,由上界松弛,改为下届松弛,情况1下,可以无限松弛,但只要有一轮松弛后,V[S]>V,即可退出

情况2下,松弛次数有限,当不能松弛时,即可退出,然后判断V[S]是否大于V

通过1860和3259两道题,对Bellman-Ford算法的理解更深入了

 

代码:

 

抱歉!评论已关闭.