这一题是一道比较好的最短路的变型题,大致思路是求得本身到本身的最短路,注意这一题路与路是相乘的关系,用floy的算法即可。

AC code:

View Code

 1 #include <iostream>
 2 #include <string>
 3 #include <map>
 4 #define INF 10000
 5 using namespace std;
 6
 7 int n, m; //货币种类与兑换方式
 8
 9 map<string, int> v; //利用c++提供的模板库来为数据读入带来方便
10
11 double dis[100][100];
12 char str[50], str1[50], str2[50];
13
14 void init()
15 {
16     double rate;
17     //initial
18     for (int i = 0; i < 100; i++)
19     {
20         for (int j = 0; j < 100; j++)
21         {
22             dis[i][j] = INF;
23         }
24     }
25     //初始化时将自己到本身的兑换值默认为1
26     for (int i = 1; i <= n; i++)
27     {
28         cin >> str;
29         v[str] = i;
30         dis[i][i] = 1;
31     }
32     scanf("%d", &m);
33     //利用c++模板库让英文名字跟序号对应起来
34     for (int i = 0; i < m; i++)
35     {
36         cin >> str1 >> rate >> str2;
37         dis[v[str1]][v[str2]] = rate;
38     }
39 }
40 void floyd()
41 {
42     for (int k = 1; k <= n; k++)
43     {
44         for (int i = 1; i <= n ; i++)
45         {
46             for (int j = 1 ; j <= n; j++)
47             {
48                    if(dis[i][j] < dis[i][k] * dis[k][j])
49                        dis[i][j] = dis[i][k] * dis[k][j];
50             }
51         }
52     }
53 }
54 int main()
55 {
56     int number = 1;
57     while(scanf("%d", &n) != EOF && n)
58     {
59
60            init();
61            floyd();
62            int flag = false;
63            //一旦找出一个盈利的即可输出
64            for (int i = 1; i <= n; i++)
65            {
66                 if(dis[i][i] > 1)
67                     flag = true;
68                 break;
69            }
70            if(flag)
71                cout << "Case " << number << ": Yes"<<endl;
72            else
73                cout << "Case " << number << ": No" <<endl;
74            number++;
75     }
76     return 0;
77 }

转载于:https://www.cnblogs.com/gaigai/archive/2012/04/13/2446298.html

POJ 2240 Arbitrage相关推荐

  1. POJ 2240 Arbitrage(SPFA判正环)

    POJ 2240 Arbitrage 题目大意 套利是指利用货币汇率的差异,将一种货币的一个单位转换为同一货币的多个单位.例如,假设1美元买0.5英镑,1英镑买10.0法国法郎,1法国法郎买0.21美 ...

  2. poj 2240 Arbitrage (Floyd)

    链接:poj 2240 题意:首先给出N中货币,然后给出了这N种货币之间的兑换的兑换率. 如 USDollar 0.5 BritishPound 表示 :1 USDollar兑换成0.5 Britis ...

  3. poj 2240 Arbitrage (floyd 变形)

    http://poj.org/problem?id=2240 floyd 的变形 题意 有n个货币,他们的交换情况m个 例如: 3 USDollar BritishPound FrenchFranc ...

  4. POJ 2240 Arbitrage(判正环)

    http://poj.org/problem?id=2240 题意: 货币兑换,判断最否是否能获利. 思路: 又是货币兑换题,Belloman-ford和floyd算法都可以的. 1 #include ...

  5. poj 2240 Arbitrage(bellman-ford spfa 判断正环)

    http://poj.org/problem?id=2240 基本和poj 1860相同 只是把单点变成了任意点 做完1860再做这题就完全把思路套上就过了 做完才发现网上的题解都用的是floyd 不 ...

  6. POJ 2240 Arbitrage(最短路 套汇)

    题意  给你n种币种之间的汇率关系  推断是否能形成套汇现象  即某币种多次换为其他币种再换回来结果比原来多 基础的最短路  仅仅是加号换为了乘号 #include<cstdio> #in ...

  7. POJ 2240 Arbitrage Bellman_ford 判读是否存在正环

    和POJ1860差不多,就是用bellmanford判读是否存在正环,注意的是同种货币之间也可以交换,就是说:A货币换A货币汇率是2的情况也是存在的. #include<stdio.h> ...

  8. POJ 2240 Arbitrage 解题报告

    Question Link 单向图,就是bellman-ford求正环,但是应该预设起点的钱的值为1,或者任意正数.起点暴力,枚举.好吧(其实我是真的傻了). 傻傻的代码 #include<io ...

  9. I - Arbitrage POJ - 2240

    I - Arbitrage POJ - 2240 题意: 利用汇率之间的差价判断是否可以赚钱 思路: 利用 spfa 跑最长路(即松弛条件改为取更大的值),判断是否存在正环,存在则可以赚钱 #incl ...

最新文章

  1. “AI明星”第四范式C轮融资超10亿元,估值约12亿美元
  2. python class类_python中的class(类)
  3. MySQL: Starting MySQL….. ERROR! The server quit without updating PID file解决办法
  4. OpenCV、OpenCL、OpenGL、OpenPCL
  5. ups计算软件_ups不间断电源系统分类及作用
  6. Atitit.ati orm的设计and架构总结 适用于java c# php版
  7. 在ASP.NET Core中使用brotli压缩
  8. 超级管理器Android,超级文件管理器app
  9. linux鼠标回到桌面图标,Ubuntu16_18建立返回桌面、显示桌面的快捷图标的特殊方法...
  10. 阿里推迟招聘;大疆因腐败损失 10 亿;ofo 两创始人消失? | 极客头条
  11. 那些想替代 C 的语言怎么样?Go、Rust、C++ 和 Zig 生产力对比
  12. C语言从字符串中提取数字
  13. 阳光牧场助手 阳光牧场外挂
  14. 用Java实现并查集
  15. python设计报告的前言怎么写_前  言_Python语言程序设计_红黑联盟读书频道
  16. 读取nginx的conf文件_nginx.conf配置文件
  17. “碳排放”挑战当前,维谛技术(Vertiv)带来节能改造最佳实践
  18. 一文带你理顺C++中的const
  19. 【JavaBeans中的属性!】
  20. DAY 9 | 自学前端第九天

热门文章

  1. 温故而知新-面向对象的PHP
  2. leetcode_Jump Game II
  3. EXCEL中数据筛选方法
  4. Jquery操作下拉列表和复选框,自定义下拉
  5. 软件测试学习笔记:找代码中的fault,并设计特定的测试用例
  6. LeetCode每日一题: 单值二叉树(No.965)
  7. WPF - Group分组对ListBox等列表样式的约束
  8. C++井字棋游戏,DOS界面版
  9. ELK Stack 日志分析 Elasticsearch搜索权限
  10. thinkphp3.2 验证码生成和点击刷新验证码