和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 判读是否存在正环相关推荐

  1. poj 2240 Arbitrage(bellman-ford spfa 判断正环)

    http://poj.org/problem?id=2240 基本和poj 1860相同 只是把单点变成了任意点 做完1860再做这题就完全把思路套上就过了 做完才发现网上的题解都用的是floyd 不 ...

  2. POJ 2240 Arbitrage(SPFA判正环)

    POJ 2240 Arbitrage 题目大意 套利是指利用货币汇率的差异,将一种货币的一个单位转换为同一货币的多个单位.例如,假设1美元买0.5英镑,1英镑买10.0法国法郎,1法国法郎买0.21美 ...

  3. POJ 2240 Arbitrage 解题报告

    Question Link 单向图,就是bellman-ford求正环,但是应该预设起点的钱的值为1,或者任意正数.起点暴力,枚举.好吧(其实我是真的傻了). 傻傻的代码 #include<io ...

  4. poj 2240 Arbitrage (Floyd)

    链接:poj 2240 题意:首先给出N中货币,然后给出了这N种货币之间的兑换的兑换率. 如 USDollar 0.5 BritishPound 表示 :1 USDollar兑换成0.5 Britis ...

  5. I - Arbitrage(判断是否有无正环 II)

    题目描述 Arbitrage is the use of discrepancies in currency exchange rates to transform one unit of a cur ...

  6. POJ 2240 Arbitrage(判正环)

    http://poj.org/problem?id=2240 题意: 货币兑换,判断最否是否能获利. 思路: 又是货币兑换题,Belloman-ford和floyd算法都可以的. 1 #include ...

  7. poj 2240 Arbitrage (floyd 变形)

    http://poj.org/problem?id=2240 floyd 的变形 题意 有n个货币,他们的交换情况m个 例如: 3 USDollar BritishPound FrenchFranc ...

  8. POJ 2240 Arbitrage(最短路 套汇)

    题意  给你n种币种之间的汇率关系  推断是否能形成套汇现象  即某币种多次换为其他币种再换回来结果比原来多 基础的最短路  仅仅是加号换为了乘号 #include<cstdio> #in ...

  9. POJ 2240 Arbitrage

    这一题是一道比较好的最短路的变型题,大致思路是求得本身到本身的最短路,注意这一题路与路是相乘的关系,用floy的算法即可. AC code: View Code 1 #include <iost ...

最新文章

  1. 初学者应该了解的编程陷阱:javascript篇
  2. jQuery-DOM节点插入总结
  3. sql2000 中 存储过程 相关
  4. java--HashMap与Hashtable的区别
  5. MacBook/MacOS如何写入MacBook特有的符号(例如:⌘/⌥/⎋/⇪)
  6. HTML之二:body标记的属性及属性值
  7. LeetCode 1952. 三除数
  8. 大数据?这些你了解吗?------之基础知识篇
  9. jetty jndi mysql_jetty配置jndi数据源
  10. 一招解决二级域名下session失效问题
  11. 阿里云云计算 22 VPC连接
  12. java+整合handwrite_E-signature-master
  13. RFID射频识别系统简述
  14. asp cstr 函数
  15. html注册cab包,OCX控件打包成CAB并实现数字签名过程
  16. 条码扫描模块通过什么编程才能使用呢?
  17. UFS/EMMC压力测试
  18. 如何在微信分享的网页中显示描述和图片
  19. 【萧蕊冰】你知道ui设计属于什么行业吗?
  20. 【C++】游戏开发--基础

热门文章

  1. 电脑合上盖子不锁屏_笔记本电脑合上盖子或台式机离开后黑屏是“休眠”还是“睡眠”...
  2. 检测多边形是否重叠_只要保留定位感知通道,目标检测模型也能剪枝70%参数
  3. java override 用法_JAVA中 @Override 的作用
  4. OpenCV-Python实战(18)——深度学习简介与入门示例
  5. vector用法 java_java.util.vector中的vector的详细用法
  6. 迅捷cad_迅捷功能
  7. mongodb find_MongoDB find()
  8. 开课吧:一文读懂算法工程师大致分类与技术要求
  9. 这100道Java面试题,面试不是什么难事了!
  10. C++基础介绍,C++基本简介