POJ 2240 Arbitrage (Bellman Ford判正环)
| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions:27167 | Accepted: 11440 |
Description
Your job is to write a program that takes a list of currency exchange rates as input and then determines whether arbitrage is possible or not.
Input
Test cases are separated from each other by a blank line. Input is terminated by a value of zero (0) for n.
Output
Sample Input
3
USDollar
BritishPound
FrenchFranc
3
USDollar 0.5 BritishPound
BritishPound 10.0 FrenchFranc
FrenchFranc 0.21 USDollar 3
USDollar
BritishPound
FrenchFranc
6
USDollar 0.5 BritishPound
USDollar 4.9 FrenchFranc
BritishPound 10.0 FrenchFranc
BritishPound 1.99 USDollar
FrenchFranc 0.09 BritishPound
FrenchFranc 0.19 USDollar 0
Sample Output
Case 1: Yes
Case 2: No 思路:
用bellman判是否存在正环,可以将距离全部初始化为1.
不到万不得已,绝对不用SPAF.
代码:
#include<iostream>
#include<cstring>
#include<cstdio>
#include<vector>
using namespace std;
char s[][];
int u[],v[];
double w[];
int n,m;
double dis[]; bool Bellman()
{ for(int i=;i<=n;i++){
dis[i]=;
}
int flag=;
for(int i=;i<=n;i++){
flag=;
for(int j=;j<=m;j++){
if(dis[v[j]]<dis[u[j]]*w[j]){
dis[v[j]]=dis[u[j]]*w[j];
flag=;
}
}
}
return flag;
} int main()
{
int T=;
while(scanf("%d",&n)&&n){
T++;
for(int i=;i<=n;i++){
scanf("%s",s[i]);
} scanf("%d",&m);
char a[],b[],va,vb;
double uu;
for(int i=;i<=m;i++){
scanf("%s%lf%s",a,&uu,b);
for(int j=;j<=n;j++){
if(!strcmp(a,s[j])){va=j;break;}
}
for(int j=;j<=n;j++){
if(!strcmp(b,s[j])){vb=j;break;}
}
u[i]=va;v[i]=vb;w[i]=uu;
} if(Bellman()){
printf("Case %d: Yes\n",T);
}
else printf("Case %d: No\n",T);
}
}
POJ 2240 Arbitrage (Bellman Ford判正环)的更多相关文章
- poj1860 兑换货币(bellman ford判断正环)
传送门:点击打开链接 题目大意:一个城市有n种货币,m个货币交换点,你有v的钱,每个交换点只能交换两种货币,(A换B或者B换A),每一次交换都有独特的汇率和手续费,问你存不存在一种换法使原来的钱更多. ...
- 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 题解
Arbitrage Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 21300 Accepted: 9079 Descri ...
- poj 2049(二分+spfa判负环)
poj 2049(二分+spfa判负环) 给你一堆字符串,若字符串x的后两个字符和y的前两个字符相连,那么x可向y连边.问字符串环的平均最小值是多少.1 ≤ n ≤ 100000,有多组数据. 首先根 ...
- 最短路(Floyd_Warshall) POJ 2240 Arbitrage
题目传送门 /* 最短路:Floyd模板题 只要把+改为*就ok了,热闹后判断d[i][i]是否大于1 文件输入的ONLINE_JUDGE少写了个_,WA了N遍:) */ #include <c ...
- POJ 2240 Arbitrage spfa 判正环
d[i]代表从起点出发可以获得最多的钱数,松弛是d[v]=r*d[u],求最长路,看有没有正环 然后这题输入有毒,千万别用cin 因为是大输入,组数比较多,然后找字符串用strcmp就好,千万不要用m ...
- POJ 2240 Arbitrage Bellman_ford 判读是否存在正环
和POJ1860差不多,就是用bellmanford判读是否存在正环,注意的是同种货币之间也可以交换,就是说:A货币换A货币汇率是2的情况也是存在的. #include<stdio.h> ...
- POJ 1860——Currency Exchange——————【最短路、SPFA判正环】
Currency Exchange Time Limit:1000MS Memory Limit:30000KB 64bit IO Format:%I64d & %I64u S ...
- POJ 3621 Sightseeing Cows 【01分数规划+spfa判正环】
题目链接:http://poj.org/problem?id=3621 Sightseeing Cows Time Limit: 1000MS Memory Limit: 65536K Total ...
随机推荐
- linux 查看网段内所有IP
如有转载,不胜荣幸.http://www.cnblogs.com/aaron-agu/ 方法一: nmap –nsP 192.168.1.0/24 #从192.168.1.0到192.168.1.25 ...
- Delphi 限制Edit输入 多个例子
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not (key in [ '.',#8]) then ...
- java构造器和构建器
本文摘自:https://blog.csdn.net/wh2827991/article/details/79013115 在实例化一个类的过程中,通常会遇到多个参数的构造函数,但如果有些参数是非必需 ...
- 如何调用layer.open打开的的iframe窗口中的JS
- 检测某一目录下md5相同的文件
import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.io.IOUtils; import jav ...
- 微信小程序——创建自己的第一个小程序【一】
注册 微信小程序注册 https://mp.weixin.qq.com/wxopen/waregister?action=step1 填写账号信息 作为登录帐号,请填写未被微信公众平台注册,未被 ...
- thymeleaf中的判断总结
判断String字符串,添加引号 th:class="${flag=='forum.html'}?'active'" 判断boolean类型,注意不能当成字符串处理,不能添加引号 ...
- 使用ROME解析rss,如何获取icon图标
问题 网站使用SpringMVC框架,实现了RSS订阅,但是在阅读器里面,只有网站的标题,没有网站的图标. 分析 ROME会从<channel>标签下指定的<link>地址中, ...
- BZOJ2961 共点圆[CDQ分治]
题面 bzoj 其实就是推一下圆的式子 长成这个样子 假设要查询的点是(x, y) 某个圆心是(p, q) \((x - p)^2 + (y - q)^2 \leq p^2 + q^2\) 变成 \( ...
- Nagios 配置自动发邮件功能
安装sendmailyum install -y sendmail* mailx 修改防火墙设置,添加25端口到防火墙vi /etc/sysconfig/iptables 重启 iptables.se ...