POJ 1860 Currency Exchange

21 篇文章 0 订阅

有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算法的理解更深入了

 

代码:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值