hdu1217 floyd

原创 2015年11月20日 00:45:43

1217 floyd算法 不过算的是相乘的最大值

写完后一直在纠结对不对,因为如果出现ex[i][k] ex[k][j]均为-1时,相乘即为1这样就乱套,但是交了之后过了,  说明测试数据中,并没有给出孤立的国家

如果国家间利率没有联系,则赋为-1

贴上代码:

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


using namespace std;
const int C_MAX = 35;
double ex[C_MAX][C_MAX];//ex[u][v]表示u对v的汇率 u-->v
map<string, int> m;
int C,M;

bool floyd()
{
    for(int k=1; k<=C; k++)
    {
        for(int i=1; i<=C; i++)
        {
            for(int j=1; j<=C; j++)
            {
                    ex[i][j] = max(ex[i][j],ex[i][k] * ex[k][j]);
            }
        }
    }
    
    for (int i=1; i<=C; i++)
    {
        if(ex[i][i]>1)return true;

    }
    return false;
}



int main()
{
    int Case = 1;
    while((scanf("%d",&C)!=EOF)&&C){
        for(int i=1;i<=C; i++){
            for(int j=1; j<=C; j++){
                    if(i==j)ex[i][j] = 1;
                    else{ex[i][j] = -1.0;
                }
            }
        }
        string temp;
        int fir, sec;
        double exc;
        for(int i=1; i<=C; i++)
        {
            cin >> temp;
            m[temp] = i;
        }
        scanf("%d",&M);
        for(int i=0; i<M; i++)
        {
            cin >> temp;
            fir = m[temp];
            scanf("%lf",&exc);
            cin >> temp;
            sec = m[temp];
            ex[fir][sec] = exc;
        }

        if(floyd())printf("Case %d: Yes\n", Case);
        else printf("Case %d: No\n",Case);
        Case++;
    }


    return 0;
}




版权声明:虽然为本人原创,但是写得真是渣,想转就转,反正我也不是鸣人。

相关文章推荐

hdu 1217(Floyd变形)

Arbitrage Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

HDU1217 - Arbitrage - 思维+乘法求最大的最短路(Floyd+spfa)

1.题目描述: Arbitrage Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe...

hdu 1217 Arbitrage(最短路--floyd+对数的性质)

Arbitrage Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota...

hdu1217 floyd

#include #include #include #include #include #include #include #define N 1005 const double I...

hdu 1217 floyd+map容器

Arbitrage TimeLimit: 2000/1000 MS (Java/Others)    Memory Limit:65536/32768 K (Java/Others) Total Su...

hdu1217(floyd算法)

Description Arbitrage is the use of discrepancies in currency exchange rates to transform one u...

HDU1217(floyd算法)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1217   package D0801; /* * 题目大意:就是套汇率,如果最后套到的钱...
  • lhfight
  • lhfight
  • 2012年08月01日 17:21
  • 610

hdu 1217/poj 2240 Arbitrage【floyd】

Arbitrage Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To...

hdu 1217(Floyd 算法)

自己还是比较容易受外界影响,外面一有什么风吹草动,就没心思继续做题了,该死,就不能集中下精神  啊, #include #include #include using namespace st...
  • ljfbest
  • ljfbest
  • 2011年08月01日 11:28
  • 746

hdu 1217 Arbitrage Floyd || SPFA

转载请注明出处:http://acm.hdu.edu.cn/showproblem.php?pid=1217 Problem Description Arbitrage is the use of ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hdu1217 floyd
举报原因:
原因补充:

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