设为首页 收藏本站
查看: 1230|回复: 0

[经验分享] POJ 1860 Currency Exchange(最短路 Bellman-Ford)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-9-12 03:40:33 | 显示全部楼层 |阅读模式
Currency Exchange   大意:有多种货币,之间可以交换,但是需要手续费,也就是说既有汇率又有手续费。问经过交换之后能不能赚。
  
  思路:Bellman_Ford,因为要求最长路,所以松弛条件改一下就好了。
  
  Tips:

3              2                  1                20.0
货币的数量   兑换点的数量     主人公拥有的货币量    主人公拥有货币的价值
1 2 1.00 1.00 1.00 1.00
//货币1与货币2交换时,1与2的汇率是1.00,1换2的手续费是1.00,2与1的汇率是1.00,2换1的手续费是1.00。
2 3 1.10 1.00 1.10 1.00
//货币1与货币2交换时,1与2的汇率是1.10,1换2的手续费是1.00,2与1的汇率是1.10,2换1的手续费是1.00。


DSC0000.gif DSC0001.gif


1 #include <stdio.h>
2 #include <iostream>
3 #include <map>
4 #include <stack>
5 #include <string.h>
6 #define INF 0x3f3f3f3f
7 using namespace std;
8
9 int n, m, s;
10 double v;
11 double dis[110];
12 int t;
13
14 struct node
15 {
16     int x, y;
17     double r, c;
18 } Map[210];
19
20 bool Bellman_Ford()
21 {
22     memset(dis, 0, sizeof(dis));
23     dis = v;
24     for(int i = 1; i <= n-1; i++)
25     {
26         bool flag = false;
27         for(int j = 0; j < t; j++)
28         {
29             if(dis[Map[j].y] < (dis[Map[j].x]-Map[j].c)*Map[j].r)
30             {
31                 dis[Map[j].y] = (dis[Map[j].x]-Map[j].c)*Map[j].r;
32                 flag = true;
33             }
34         }
35         if(!flag)
36         {
37             break;
38         }
39     }
40     for(int i = 0; i < t; i++)
41     {
42         if(dis[Map.y] < (dis[Map.x]-Map.c)*Map.r)
43         {
44             return true;
45         }
46     }
47     return false;
48 }
49
50 void Solve()
51 {
52     int a, b;
53     double Rab, Rba, Cab, Cba;
54     while(~scanf("%d%d%d%lf", &n, &m, &s, &v))
55     {
56         t = 0;
57         for(int i = 0; i < m; i++)
58         {
59             scanf("%d%d%lf%lf%lf%lf", &a, &b, &Rab, &Cab, &Rba, &Cba);
60             Map[t].x = a;
61             Map[t].y = b;
62             Map[t].r = Rab;
63             Map[t++].c = Cab;
64             Map[t].x = b;
65             Map[t].y = a;
66             Map[t].r = Rba;
67             Map[t++].c = Cba;
68         }
69         if(Bellman_Ford())
70         {
71             printf("YES\n");
72         }
73         else
74         {
75             printf("NO\n");
76         }
77     }
78 }
79
80 int main()
81 {
82     Solve();
83
84     return 0;
85 }
Currency Exchange  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-112414-1-1.html 上篇帖子: Exchange修改全天日程的问题。 下篇帖子: outlook exchange相关文章
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表