POJ - 2240 Arbitrage(Bellman-Ford)
https://vjudge.net/problem/POJ-2240
题意
已知n种货币,以及m种货币汇率及方式,问能否通过货币转换,使得财富增加。
分析
Bellman-Ford判断正环,注意初始化时置为0。
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<iostream>
#include<vector>
#include<map> using namespace std;
int n,m;
double dist[]; //注意类型为 double
struct edge //边的结构体,st为起点,ed为终点,rt为汇率
{
int st,ed;
double rt;
edge(int sst,int eed,double rtt) : st(sst),ed(eed),rt(rtt) {}
edge() {}
}; vector<edge> G;
map<string ,int> mp; bool Bellman_ford(int v)
{
memset(dist,,sizeof(dist));
dist[v] = ;
for(int j = ;j < n;j++) { // n - 1 次松弛操作
for(int i = ;i < G.size();i++) {
int p1 = G[i].st,p2 = G[i].ed;
if(dist[p2] < dist[p1] * G[i].rt) {
dist[p2] = dist[p1] * G[i].rt;
}
}
}
for(int i = ;i < G.size();i++){
int p1 = G[i].st,p2 = G[i].ed;
if(dist[p2] < dist[p1] * G[i].rt) { //第 n 次松弛可以得到更优解,则存在环
return true;
}
}
return false;
} int main()
{
int cas = ;
string s,ss;
while(~scanf("%d",&n) &&n) {
for(int i = ;i < n;i++) {
cin >> s;
mp[s] = i; //货币名 s 的顶点编号 为 i
}
cin >> m;
string beg,ends;
double r;
G.clear();
for(int i = ;i < m;i++) {
cin >> beg >> r >> ends; //边的信息读取
G.push_back(edge (mp[beg] ,mp[ends] ,r) );
}
printf("Case %d: ",cas++);
for(int i = ;i < n;i++) { //枚举所有开始的起点
if(Bellman_ford(i)) { //存在环
cout << "Yes" << endl;
//printf("bellman %d\n",i);
break;
}
else if(i == n - )
cout << "No" <<endl;
}
}
return ;
}
POJ - 2240 Arbitrage(Bellman-Ford)的更多相关文章
- poj 2240 Arbitrage 题解
Arbitrage Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 21300 Accepted: 9079 Descri ...
- 最短路(Floyd_Warshall) POJ 2240 Arbitrage
题目传送门 /* 最短路:Floyd模板题 只要把+改为*就ok了,热闹后判断d[i][i]是否大于1 文件输入的ONLINE_JUDGE少写了个_,WA了N遍:) */ #include <c ...
- POJ 2240 Arbitrage / ZOJ 1092 Arbitrage / HDU 1217 Arbitrage / SPOJ Arbitrage(图论,环)
POJ 2240 Arbitrage / ZOJ 1092 Arbitrage / HDU 1217 Arbitrage / SPOJ Arbitrage(图论,环) Description Arbi ...
- poj 2240 Arbitrage (Floyd)
链接:poj 2240 题意:首先给出N中货币,然后给出了这N种货币之间的兑换的兑换率. 如 USDollar 0.5 BritishPound 表示 :1 USDollar兑换成0.5 Britis ...
- POJ 2240 Arbitrage (Bellman Ford判正环)
Arbitrage Time Limit: 1000MS Memory Limit: 65536K Total Submissions:27167 Accepted: 11440 Descri ...
- POJ 2240 Arbitrage【Bellman_ford坑】
链接: http://poj.org/problem?id=2240 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22010#probl ...
- POJ 2240 Arbitrage(判正环)
http://poj.org/problem?id=2240 题意:货币兑换,判断最否是否能获利. 思路:又是货币兑换题,Belloman-ford和floyd算法都可以的. #include< ...
- poj 2240 Arbitrage
Time Limit: 1000 MS Memory Limit: 65536 KB 64-bit integer IO format: %I64d , %I64u Java class name ...
- poj 2240 Arbitrage bellman-ford算法
点击打开链接 Arbitrage Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13434 Accepted: 5657 ...
- POJ 2240 Arbitrage(floyd)
http://poj.org/problem?id=2240 题意 : 好吧,又是一个换钱的题:套利是利用货币汇率的差异进行的货币转换,例如用1美元购买0.5英镑,1英镑可以购买10法郎,一法郎可以购 ...
随机推荐
- 用C语言操作MySQL数据库,进行连接、插入、修改、删除等操作
C/C++ code ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 3 ...
- grunt-inline:一个资源内嵌插件
一.插件简介 将引用的外部资源,如js.css.img等,内嵌到引用它们的文件里去. 二.使用场景 在项目中,出于某些原因,有的时候我们需要将一些资源,比如js脚本内嵌到页面中去.比如我们的html页 ...
- 《杜增强讲Unity之Tanks坦克大战》1-准备工作
0.案例介绍 0.1开始界面 点击Play Now 进入游戏界面 左边的坦克使用ws控制前后移动,ad键左右旋转,空格键开火 右边的坦克使用方向键上下控制前后移动,方向键左右键实现左右旋转 ...
- iOS开发面试题整理
前言 本文借鉴整理了iOS高级开发常见的面试题,并且分博客一一分析,希望能和大家一起进步学习. 欢迎大家关注我的 Github
- 如何自出版一本书:定制 bookdown
目录 如何自出版一本书:定制 bookdown bookdown 的第一步 亚马逊 Kindle 格式 创建书籍 _bookdown.yml 注意行宽 写在每个 .Rmd 文件的开头 index.Rm ...
- 区块链Hyperledger Fabric 学习记录(一)开发环境搭建(ubuntu16.04/ubuntu18.04)
目录 Fabric开发环境搭建 更新说明 教程环境及软件版本 Docker 安装Docker 配置用户组 配置Aliyun Docker加速器 安装docker-compose Go 下载源码 安装源 ...
- 2017-2018 第一学期201623班《程序设计与数据结构》-第2&3周作业问题总结
一.作业内容 第二周作业 http://www.cnblogs.com/rocedu/p/7484252.html#WEEK02 第三周作业 作业一定按教学进程中的模板提交 本周学习任务 点评结对同学 ...
- @PathVariable获取带点参数,获取不全
{account:.+}在{account}后加上:.+ 可参考原博:http://blog.csdn.net/jrainbow/article/details/46126179
- 毕业设计---json,Struts,ajax以及JQuery简单案例
<!-- Struts2的xml文件配置 --><struts> <package name="default" namespace="/& ...
- SDN可靠性相关
A subtree-based approach to failure detection and protection for multicast in SDN FRONTIERS OF INFOR ...