题目链接:

https://vjudge.net/problem/POJ-2240

题目大意:

已知n种货币,以及m种货币汇率及方式,问能否通过货币转换,使得财富增加。

思路:

由于这里问的是财富有没有增加,但是没有源点,所以可以枚举1-n为源点,分别用bellman-ford算法判断是否存在正环,如果有正环那就输出Yes,反之输出No。

这里还需要编号

其实可以用Floyd算法直接出结果判断有没有正环,这里用bellman-ford是卡着时间过的。

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<algorithm>
  5. #include<cmath>
  6. #include<queue>
  7. #include<stack>
  8. #include<map>
  9. #include<set>
  10. #include<sstream>
  11. using namespace std;
  12. typedef long long ll;
  13. const int maxn = + ;
  14. const int INF = << ;
  15. int T, n, m, cases, tot;
  16. map<string, int>id;
  17. set<string>cnt;
  18. struct edge
  19. {
  20. int u, v;
  21. double r;
  22. edge(int u, int v, double r):u(u), v(v), r(r){}
  23. edge(){}
  24. };
  25. edge a[maxn];
  26. int getid(string s)
  27. {
  28. if(cnt.count(s))return id[s];
  29. cnt.insert(s);
  30. return id[s] = cnt.size();
  31. }
  32. double d[maxn];
  33. bool Bellman(int u)
  34. {
  35. for(int i = ; i <= n; i++)d[i] = 1.0 * INF;
  36. d[u] = ;
  37. for(int i = ; i < n; i++)
  38. {
  39. for(int j = ; j < tot; j++)
  40. {
  41. int x = a[j].u, y = a[j].v;
  42. double r = a[j].r;
  43. if(d[x] * r > d[y])
  44. {
  45. d[y] = d[x] * r;
  46. if(i == n - )return true;//第n次迭代还有更新说明存在正环
  47. }
  48. }
  49. }
  50. return false;
  51. }
  52. int main()
  53. {
  54. while(cin >> n && n)
  55. {
  56. string s;
  57. cnt.clear();
  58. id.clear();
  59. tot = ;
  60. bool flag = ;
  61. for(int i = ; i < n; i++)
  62. {
  63. cin >> s;
  64. getid(s);
  65. }
  66. cin >> m;
  67. string s1, s2;
  68. double r;
  69. for(int i = ; i < m; i++)
  70. {
  71. cin >> s1 >> r >> s2;
  72. int u = getid(s1);
  73. int v = getid(s2);
  74. a[tot++] = edge(u, v, r);
  75. }
  76. printf("Case %d: ", ++cases);
  77. for(int i = ; i <= n; i++)
  78. {
  79. if(Bellman(i))
  80. {
  81. flag = ;
  82. break;
  83. }
  84. }
  85. if(flag)printf("Yes\n");
  86. else printf("No\n");
  87. }
  88. return ;
  89. }

POJ-2240 Arbitrage---判断正环+枚举的更多相关文章

  1. Currency Exchange POJ - 1860 spfa判断正环

    //spfa 判断正环 #include<iostream> #include<queue> #include<cstring> using namespace s ...

  2. poj 1860 (Bellman_Ford判断正环)

    题意:给出n种货币,m中交换关系,给出两种货币汇率和手续费,求能不能通过货币间的兑换使财富增加. 用Bellman_Ford 求出是否有正环,如果有的话就可以无限水松弛,财富可以无限增加. #incl ...

  3. POJ 2240 Arbitrage (spfa判环)

    Arbitrage Arbitrage is the use of discrepancies in currency exchange rates to transform one unit of ...

  4. POJ 2240 Arbitrage / ZOJ 1092 Arbitrage / HDU 1217 Arbitrage / SPOJ Arbitrage(图论,环)

    POJ 2240 Arbitrage / ZOJ 1092 Arbitrage / HDU 1217 Arbitrage / SPOJ Arbitrage(图论,环) Description Arbi ...

  5. Currency Exchange POJ - 1860 (spfa判断正环)

    Several currency exchange points are working in our city. Let us suppose that each point specializes ...

  6. POJ 2240 Arbitrage【Bellman_ford坑】

    链接: http://poj.org/problem?id=2240 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22010#probl ...

  7. 最短路(Floyd_Warshall) POJ 2240 Arbitrage

    题目传送门 /* 最短路:Floyd模板题 只要把+改为*就ok了,热闹后判断d[i][i]是否大于1 文件输入的ONLINE_JUDGE少写了个_,WA了N遍:) */ #include <c ...

  8. POJ - 2240 Arbitrage(Bellman-Ford)

    https://vjudge.net/problem/POJ-2240 题意 已知n种货币,以及m种货币汇率及方式,问能否通过货币转换,使得财富增加. 分析 Bellman-Ford判断正环,注意初始 ...

  9. poj 2240 Arbitrage 题解

    Arbitrage Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 21300   Accepted: 9079 Descri ...

  10. hdu 1317 XYZZY【Bellheman_ford 判断正环小应用】

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=1317 http://acm.hust.edu.cn/vjudge/contest/view.action ...

随机推荐

  1. 请详细描述(以硬盘启动)Linux系统从打开主机电源到进入登录界面整个过程的流程。

    1. 开机进行BIOS(BIOS(Basic Input / Output System)自检测系统外围硬件设备如CPU.内存.IO.显卡.鼠标键盘等.根据BIOS中设置的系统启动顺序搜索用于启动系统 ...

  2. redis的主从复制(读写分离)/哨兵(主从切换)配置

    准备两个redis服务,两台机器,依次命名文件夹子master,slave1 10.10.10.7 10.10.10.8 1.master修改配置文件 [root@db2 conf]# cat 637 ...

  3. SQL注入之Sqli-labs系列第一篇

    在开始接触渗透测试开始,最初玩的最多的就是Sql注入,注入神器阿D.明小子.穿山甲等一切工具风靡至今.当初都是以日站为乐趣,从安全法实施后在没有任何授权的情况下,要想练手只能本地环境进行练手,对于sq ...

  4. opencv配置

    1.安装opecv库 从官网http://opencv.org/下载OpenCV windows版 运行之后 2.配置环境变量 64位系统,可以将32位和64位两个都添加上,免得以后编译不同程序再来配 ...

  5. Django+xadmin打造在线教育平台(七)

    十.授课教师 10.1.讲师列表页 拷贝teacher-list.html和teacher-detail.html到templates目录下 先改teacher-list.html,同样继承base. ...

  6. Hook 无侵入式埋点(页面统计)

    一.技术原理 Method-Swizzling 黑魔法 方法交换(不懂的可以查) 二.页面统计 某盟页面统计SDK需要开发者在APP基类里实现ViewDidAppear和viewDidDisappea ...

  7. 基于ECharts的饼状数据展示

    一.导入ECharts文件 二.HTML代码 大小后期自己调 三.后台代码 四.js代码 不要问为什么- -我是扒下来的 可复制代码: //基于准备好的dom,初始化echarts实例 var myD ...

  8. 【Redis使用系列】Redis常用操作

    一.string类型的常用命令 set key value   #一个key对应一个value.多次赋值,会覆盖前面. setnx key value  #如果key存在则创建key1,并返回1,如果 ...

  9. 第二次作业评分可能要 delay 一些

    各位同学,因为我现在在出差,昨天刚刚到旧金山,加上倒时差,所以这次作业我处理得会更慢一些,希望谅解. 另外,博客园的邮件通知邮件好多都进垃圾箱了,所以如果你有什么问题我没回且你关心的,请给我写邮件:j ...

  10. Alpha冲刺——Day1

    一.合照 二.项目燃尽图 三.项目进展 1.界面设计:图形界面部分完成 2.数据库设计:数据库设计基本完成 3.搭建基本服务器框架 github链接 四.明日规划 1.继续完成剩下的图形界面 2.An ...