POJ 2240 Arbitrage Bellman_ford 判读是否存在正环
和POJ1860差不多,就是用bellmanford判读是否存在正环,注意的是同种货币之间也可以交换,就是说:A货币换A货币汇率是2的情况也是存在的。
#include<stdio.h>
#include<string.h>
#include<cstring>
#include<string>
#include<math.h>
#include<queue>
#include<algorithm>
#include<iostream>
#include<stdlib.h>
#include<cmath>#define INF 0x3f3f3f3f
#define MAX 1005using namespace std;struct node
{int u,v;double k;
}Map[MAX];char str[50][100000];
int n,tot,m;
double dist[MAX];int bellman_ford()
{int i,j;memset(dist,0,sizeof(dist));dist[1]=1;for(i=1;i<n;i++){for(j=1;j<tot;j++){if(dist[Map[j].v] < dist[Map[j].u] * Map[j].k)dist[Map[j].v] = dist[Map[j].u] * Map[j].k;}}for(j=1;j<tot;j++)if(dist[Map[j].v] < dist[Map[j].u] * Map[j].k)return 1;return 0;
}int main()
{int i,j,a,b,cas=1,ok;char str1[MAX],str2[MAX];double num;while(scanf("%d",&n),n){tot=1;for(i=1;i<=n;i++){scanf("%s",str[i]);}scanf("%d",&m);for(i=1;i<=m;i++){scanf("%s%lf%s",str1,&num,str2);for(j=1;j<=n;j++){if(strcmp(str[j],str1)==0)a=j;if(strcmp(str[j],str2)==0)b=j;}Map[tot].u=a;Map[tot].v=b;Map[tot++].k=num;}ok=bellman_ford();if(ok)printf("Case %d: Yes\n",cas++);elseprintf("Case %d: No\n",cas++);}return 0;
}
转载于:https://www.cnblogs.com/alan-W/p/5666160.html
POJ 2240 Arbitrage Bellman_ford 判读是否存在正环相关推荐
- poj 2240 Arbitrage(bellman-ford spfa 判断正环)
http://poj.org/problem?id=2240 基本和poj 1860相同 只是把单点变成了任意点 做完1860再做这题就完全把思路套上就过了 做完才发现网上的题解都用的是floyd 不 ...
- POJ 2240 Arbitrage(SPFA判正环)
POJ 2240 Arbitrage 题目大意 套利是指利用货币汇率的差异,将一种货币的一个单位转换为同一货币的多个单位.例如,假设1美元买0.5英镑,1英镑买10.0法国法郎,1法国法郎买0.21美 ...
- POJ 2240 Arbitrage 解题报告
Question Link 单向图,就是bellman-ford求正环,但是应该预设起点的钱的值为1,或者任意正数.起点暴力,枚举.好吧(其实我是真的傻了). 傻傻的代码 #include<io ...
- poj 2240 Arbitrage (Floyd)
链接:poj 2240 题意:首先给出N中货币,然后给出了这N种货币之间的兑换的兑换率. 如 USDollar 0.5 BritishPound 表示 :1 USDollar兑换成0.5 Britis ...
- I - Arbitrage(判断是否有无正环 II)
题目描述 Arbitrage is the use of discrepancies in currency exchange rates to transform one unit of a cur ...
- POJ 2240 Arbitrage(判正环)
http://poj.org/problem?id=2240 题意: 货币兑换,判断最否是否能获利. 思路: 又是货币兑换题,Belloman-ford和floyd算法都可以的. 1 #include ...
- poj 2240 Arbitrage (floyd 变形)
http://poj.org/problem?id=2240 floyd 的变形 题意 有n个货币,他们的交换情况m个 例如: 3 USDollar BritishPound FrenchFranc ...
- POJ 2240 Arbitrage(最短路 套汇)
题意 给你n种币种之间的汇率关系 推断是否能形成套汇现象 即某币种多次换为其他币种再换回来结果比原来多 基础的最短路 仅仅是加号换为了乘号 #include<cstdio> #in ...
- POJ 2240 Arbitrage
这一题是一道比较好的最短路的变型题,大致思路是求得本身到本身的最短路,注意这一题路与路是相乘的关系,用floy的算法即可. AC code: View Code 1 #include <iost ...
最新文章
- 初学者应该了解的编程陷阱:javascript篇
- jQuery-DOM节点插入总结
- sql2000 中 存储过程 相关
- java--HashMap与Hashtable的区别
- MacBook/MacOS如何写入MacBook特有的符号(例如:⌘/⌥/⎋/⇪)
- HTML之二:body标记的属性及属性值
- LeetCode 1952. 三除数
- 大数据?这些你了解吗?------之基础知识篇
- jetty jndi mysql_jetty配置jndi数据源
- 一招解决二级域名下session失效问题
- 阿里云云计算 22 VPC连接
- java+整合handwrite_E-signature-master
- RFID射频识别系统简述
- asp cstr 函数
- html注册cab包,OCX控件打包成CAB并实现数字签名过程
- 条码扫描模块通过什么编程才能使用呢?
- UFS/EMMC压力测试
- 如何在微信分享的网页中显示描述和图片
- 【萧蕊冰】你知道ui设计属于什么行业吗?
- 【C++】游戏开发--基础
热门文章
- 电脑合上盖子不锁屏_笔记本电脑合上盖子或台式机离开后黑屏是“休眠”还是“睡眠”...
- 检测多边形是否重叠_只要保留定位感知通道,目标检测模型也能剪枝70%参数
- java override 用法_JAVA中 @Override 的作用
- OpenCV-Python实战(18)——深度学习简介与入门示例
- vector用法 java_java.util.vector中的vector的详细用法
- 迅捷cad_迅捷功能
- mongodb find_MongoDB find()
- 开课吧:一文读懂算法工程师大致分类与技术要求
- 这100道Java面试题,面试不是什么难事了!
- C++基础介绍,C++基本简介