//使用Floyd的变形实现
//这就是个套汇的问题,可以用Floyd求最大环,然后判断是不是大于1。
#include <cstdio>
#include <string>
#include <map>
using namespace std;
map<string,int> MAP;
double value[31][31];
double rate;
double tempfloat;
int main()
{
    int i,j,k,n,m;
    int count=1;
    char temp[100],temp1[100];
    while(scanf("%d",&n))
    {
        if(n==0)
            break;
        MAP.clear();  //清空map
        memset(value,0,sizeof(value)); //double类型的二位数组也可用memset进行初始化
        for(i=1;i<=n;i++)
        {
            scanf("%s",temp);
            MAP[(string)temp]=i;
        }
        scanf("%d",&m);
        for(i=1;i<=m;i++)
        {
            scanf("%s %lf %s",temp,&rate,temp1);
            value[MAP[(string)temp]][MAP[(string)temp1]]=rate;
        }
  //此处使用Floyd算法实现
        for(k=1;k<=n;k++)
          for(i=1;i<=n;i++)
            for(j=1;j<=n;j++)
            {
                tempfloat=value[i][k]*value[k][j];
                if(tempfloat>value[i][j]) //此处注意与传统的Floyd算法不同,此处的松弛操作是往大的方向
                        value[i][j]=tempfloat;
            }
        for(i=1;i<=n;i++)
            if(value[i][i]>1) //判断环
            {
                printf("Case %d: Yes\n",count++);
                break;
            }
        if(i==n+1)
        printf("Case %d: No\n",count++);
    }
}

转载于:https://www.cnblogs.com/north_dragon/archive/2010/04/28/1723349.html

POJ 2240题(Floyd)相关推荐

  1. Poj(2240),Floyd求汇率是不是赚钱

    题目链接:http://poj.org/problem?id=2240. Floyd算法修改一下,我要最大路径(通过转汇率变到最大)改成max. #include <iostream> # ...

  2. poj 2240 Arbitrage (Floyd)

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

  3. I - Arbitrage POJ - 2240

    I - Arbitrage POJ - 2240 题意: 利用汇率之间的差价判断是否可以赚钱 思路: 利用 spfa 跑最长路(即松弛条件改为取更大的值),判断是否存在正环,存在则可以赚钱 #incl ...

  4. POJ 2240 Arbitrage(SPFA判正环)

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

  5. POJ 刷题系列:2993. Emag eht htiw Em Pleh

    POJ 刷题系列:2993. Emag eht htiw Em Pleh 传送门:2993. Emag eht htiw Em Pleh 题意: 与2996相反,给出所有棋子的坐标关系,可视化boar ...

  6. poj 2240 Arbitrage (floyd 变形)

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

  7. POJ 2240 HDU 1217 Arbitrage(Floyd)

    Description 给定一些货币之间的单向汇率,问一笔钱能否经过若干次对换而增值 Input 多组用例,每组用例第一行为货币种数n,之后n行为货币类型,第n+2行为兑换规则数m,之后m行为货币之间 ...

  8. POJ 2240 Arbitrage(判正环)

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

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

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

最新文章

  1. 2022-2028年中国汽车内饰行业市场需求与投资规划分析报告
  2. Android Binder基本概念流程学习
  3. 计算机网络与网页制作教程,计算机网络与网页制作:Dreamweaver CS5案例教程/高等学校通识教育系列教材简介,目录书摘...
  4. layui弹出层:倒计时后自动关闭(含代码、案例)
  5. 从民办三本到知名企业感知算法工程师
  6. title属性样式 原生dom_HTML DOM title 属性
  7. Idea中maven项目中导入本地jar包
  8. 基于VB.Net的FTP操作的类(可以显示进度条)
  9. 深入浅出Word2Vec原理解析
  10. Photoshop CS6安装教程
  11. 关于向量的叉乘右手定则判方向
  12. java 多线程详细(转载)
  13. 计算机盘0字节可用,本地磁盘显示0字节可用数据恢复方法教程
  14. 紧急通知,1秒下达给员工 | 巴别鸟 V5.0上线
  15. data为什么是一个函数
  16. python发短信sim800_玩转 ESP32 + Arduino (十八) 采用SIM800L发送短信和定位(基础知识)...
  17. Android usb 控制传输,【android之USB通信】android之USB数据传输-Go语言中文社区
  18. 神武手游宠物加点方法及属性参考
  19. 让Enter键实现Tab键的功能
  20. python中爬虫隐藏身份的设置

热门文章

  1. unity3d 鼠标延各个方向拖拽物体
  2. .net 任务(Task)
  3. 使用Log4J监控系统日志邮件警报
  4. 上传文件的跨域处理(转)
  5. 12-Flutter移动电商实战-首页导航区域编写
  6. Android 申请权限结果返回处理
  7. nginx设置 二级域名 指定端口
  8. 从底层重学 Java 之 BigInteger 大整数 Gitchat连接
  9. sql服务器如何复制数据库文件,如何将架构和一些数据从SQL Server复制到另一个实例?...
  10. c语言cgi函数库,cgic: 为C语言编写CGI的C函数库