POJ2240-Arbitrage

原创 2016年06月02日 09:39:19

货币套利问题。每种货币根据不同汇率兑换到不同的货币再兑换回原货币,如果价值比原来更高即是套利。

这个一个多源问题,利用Floyd变形即可。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <string>
#include <map>

using namespace std;

const int MAXN = 35;
double G[MAXN][MAXN];
map<string, int> mp;

void Floyd(int n)
{
    for (int k = 0; k < n; k++) {
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                if (G[i][j] < G[i][k] * G[k][j]) {
                    G[i][j] = G[i][k] * G[k][j];
                }
            }
        }
    }
}

int main()
{
    int tc = 1;
    int n;
    while (scanf("%d", &n) == 1 && n) {
        for (int i = 0; i < n; i++) {
            string str;
            cin >> str;
            mp[str] = i;
        }
        
        memset(G, 0, sizeof(G));
        for (int i = 0; i < MAXN; i++) {
            G[i][i] = 1;
        }
        
        int r;
        scanf("%d", &r);
        while (r--) {
            double exc;
            string s, t;
            cin >> s >> exc >> t;
            G[mp[s]][mp[t]] = max(G[mp[s]][mp[t]], exc);
        }
        
        Floyd(n);
        
        bool arb = false;
        for (int i = 0; i < n; i++) {
            if (G[i][i] > 1) {
                arb = true;
                break;
            }
        }
        
        printf("Case %d: ", tc++);
        if (arb)
            puts("Yes");
        else
            puts("No");
    }
    
    return 0;
}


相关文章推荐

POJ2240-Arbitrage【Floyd】

  • 2011年07月30日 01:52
  • 7KB
  • 下载

POJ2240Arbitrage

  • 2011年09月18日 11:07
  • 33KB
  • 下载

poj 2240 Arbitrage(Bellman-Ford||Floyd)(中等)

思路: 对最短路的思想都深刻了解就能用求最短的思想求最长。这道题可以用好几种方法。...

POJ 2240 Arbitrage (Floyd最短路变形)

Floyd变形

POJ-2240-Arbitrage

其实这个题目的就是求通过一系列汇率转换,是否能够找到一种使得转换后钱变多的方式。 最开始用的floyd算法做的,今天想着用Spfa判断是否存在环来做。 Spfa代码: #include #inc...

poj-2240-Arbitrage(Bellman-ford算法练习 + Floyd算法练习)

poj-2240-Arbitrage(Bellman-ford算法练习 + Floyd算法练习)

poj 2240__Arbitrage (Floyd)

Arbitrage Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 18152   Accepted: 7676 ...

POJ 2240 Arbitrage(最短路 套汇)

题意  给你n种币种之间的汇率关系  判断能否形成套汇现象  即某币种多次换为其它币种再换回来结果比原来多 基础的最短路  只是加号换为了乘号 #include #include #include...
  • acvay
  • acvay
  • 2014年10月29日 10:17
  • 843

poj-2240-Arbitrage-最短路 BF

Total Submissions: 17765   Accepted: 7495 Description Arbitrage is the use of discrepancie...

POJ 2240 Arbitrage(Floyd)

POJ 2240 Arbitrage(Floyd) http://poj.org/problem?id=2240 题意:给你一些货币比如A,B,C,然后给你他们之间存在的对换关系,如A可以换0.5个B...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POJ2240-Arbitrage
举报原因:
原因补充:

(最多只允许输入30个字)