zoukankan      html  css  js  c++  java
  • POJ 2240_Arbitrage

    题意:

    给定一系列货币汇率,求能否从一种货币,经过一系列转换,最终转化回更高价值的该种货币。

    分析:

    即为求最长路并判断是否存在“正”权值回路,这里用的bellmanford算法。

    代码:

    #include<iostream>
    #include<cstring>
    #include<map>
    using namespace std;
    const int maxn = 50, maxm =1005;
    int n, m, flag = 0, cnt = 1;
    map<string, int>mp;
    struct edge{
        int from, to;
        double w;
    }e[maxm];
    double d[maxn];
    int find_loop(int v)
    {
        memset(d,0,sizeof(d));
        d[v] = 1;
        for(int i = 0; i < n; i ++){
            for(int j = 0; j < m; j++){
                if(d[e[j].to] < d[e[j].from] * e[j].w){
                    d[e[j].to] = d[e[j].from] * e[j].w;
                    if(i==n-1) return 1;
                }
            }
        }
       return 0;
    }
    int main (void)
    {
        while(cin>>n&&n){
            flag = 0;
            string ci, cj;
            for(int i = 0; i < n; i ++) {cin>>ci;mp[ci] = i;}
            cin>>m;
            for(int i = 0; i < m ; i ++){
                cin>>ci>>e[i].w >>cj;
                e[i].from = mp[ci];
                e[i].to = mp[cj];
            }
           for(int i = 0; i < n; i++){
                flag = find_loop(i);
                if(flag) break;
            }
            if(flag) cout<<"Case "<<cnt++<<": Yes"<<endl;
            else cout<<"Case "<<cnt++<<": No"<<endl;
        }
        return 0;
    }
    
    
  • 相关阅读:
    34、JS/AJAX
    33、mybatis(二)
    32、mybatis
    31、springmvc(注解)
    30、springmvc
    29、Oralce(五)
    Spring学习之路-SpringBoot简单入门
    Spring学习之路-从放弃到入门
    心情日记
    Spring学习之路-从入门到放弃
  • 原文地址:https://www.cnblogs.com/Tuesdayzz/p/5758820.html
Copyright © 2011-2022 走看看