博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ-2240-Arbitrage
阅读量:5884 次
发布时间:2019-06-19

本文共 1256 字,大约阅读时间需要 4 分钟。

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

题意:

给n种货币,和m种货币汇率。

问能否通过汇率是总金额增加。

思路:

和POJ-1860相同,都是求正权回路。此题货币由字符串给出,所以可以用map记录字符串对应的标号。

操作方便。

代码:

#include 
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;const int MAXN = 30+5;struct Node{ int l,r; double rate;}node[MAXN*MAXN];double Dis[MAXN];int n,m;map
name;bool bellman_ford(){ memset(Dis,0,sizeof(Dis)); Dis[1] = 1; for (int i = 1;i<=n-1;i++) { bool flag = false; for (int j = 1; j <= m; j++) if (Dis[node[j].r] < Dis[node[j].l] * node[j].rate) { Dis[node[j].r] = Dis[node[j].l] * node[j].rate; flag = true; } if (!flag) break; } for (int i = 1;i <= m;i++) if (Dis[node[i].r] < Dis[node[i].l] * node[i].rate) return true; return false;}int main(){ string s; double rate; int cnt = 0; while (cin >> n&&n) { for (int i = 1;i<=n;i++) { cin >> s; name[s] = i; } cin >> m; for (int i = 1;i<=m;i++) { cin >> s; node[i].l = name[s]; cin >> rate; node[i].rate = rate; cin >> s; node[i].r = name[s]; } if (bellman_ford()) printf("Case %d: Yes\n",++cnt); else printf("Case %d: No\n",++cnt); } return 0;}

  

转载于:https://www.cnblogs.com/YDDDD/p/10276376.html

你可能感兴趣的文章
控制子窗口的高度
查看>>
处理 Oracle SQL in 超过1000 的解决方案
查看>>
Alpha线性混合实现半透明效果
查看>>
chkconfig 系统服务管理
查看>>
ORACLE---Unit04: SQL(高级查询)
查看>>
贪食蛇
查看>>
201521123009 《Java程序设计》第11周学习总结
查看>>
Python3之多线程学习
查看>>
MVC和MTV结构分析
查看>>
(转)微信网页扫码登录的实现
查看>>
mariadb启动报错:[ERROR] Can't start server : Bind on unix socket: Permission denied
查看>>
nginx的信号量
查看>>
云im php,网易云IM
查看>>
河南农业大学c语言平时作业答案,河南农业大学2004-2005学年第二学期《C语言程序设计》期末考试试卷(2份,有答案)...
查看>>
c语言打开alist文件,C语言 文件的打开与关闭详解及示例代码
查看>>
c语言 中的共用体和结构体如何联合定义,结构体(Struct)、联合体(Union)和位域
查看>>
SDL如何嵌入到QT中?!
查看>>
P1026 统计单词个数
查看>>
[js高手之路] html5 canvas系列教程 - 状态详解(save与restore)
查看>>
poi excel 常用api
查看>>