zoukankan      html  css  js  c++  java
  • HDU 1217 Arbitrage(Floyd的应用)

      给出一些国家之间的汇率,看看能否从中发现某些肮脏的......朋友交易。

    这是Floyd的应用,dp思想,每次都选取最大值,最后看看自己跟自己的.....交易是否大于一。。。。

    #include<iostream>
    #include<cstring>
    #include<queue>
    #include<cstdio>
    #include<map>
    using namespace std;
    #define exp 0.00000001
    map<string,int>ma;
    double dp[33][33];
    bool Equal(double a,double b)
    {
        if(a-b > exp) return true;
        return false;
    }
    int main()
    {
        int n,ca = 0;
        while(~scanf("%d",&n) && n)
        {
            string a;
            ma.clear();
            memset(dp,0,sizeof(dp));
            for(int i = 1;i <= n;i++)
            {
                cin >> a;
                ma[a] = i;
                dp[i][i] = 1;
            }
            int m;
            scanf("%d",&m);
            for(int i = 1;i <= m;i++)
            {
                string fr,to;
                int fr1,to1;
                double k;
                cin>>fr>>k>>to;
                fr1 = ma[fr],to1 = ma[to];
                dp[fr1][to1] = k;
            }
            for(int k = 1;k <= n;k++)
            {
                for(int i = 1;i <= n;i++)
                {
                    for(int j = 1;j <= n;j++)
                        dp[i][j] = max(dp[i][j],dp[i][k] * dp[k][j]);
                }
            }
            bool flag = true;
            for(int i = 1;i <= n;i++)
            {
                if(Equal(dp[i][i],1.0))
                {
                    flag = false;
                    break;
                }
            }
            printf("Case %d: ",++ca);
            if(flag) printf("No
    ");
            else printf("Yes
    ");
        }
        return 0;
    }
  • 相关阅读:
    问题账户需求分析
    2017年秋季个人阅读计划
    阅读笔记01
    个人总结
    第二阶段站立会议07
    第二阶段站立会议06
    第二阶段站立会议05
    第二阶段站立会议04
    第二阶段站立会议03
    学习进度条(第十五周)
  • 原文地址:https://www.cnblogs.com/jifahu/p/5479209.html
Copyright © 2011-2022 走看看