poj2240Arbitrage(最短路floyd)

原创 2016年05月30日 12:19:38

这个题目是换钱和另一个有点类似,只不过这个没有手续费,这道题在读入的时候有点麻烦,我用的map和string,剩下的就好说了,看钱会不会变多,它没说从哪种变成哪种,那么就得是多源最短路用floyd,里面是汇率用乘法,然后看看是不是比原来的多就可以了

#include <iostream>
#include <map>
using namespace std;
string str[35],s1,s2;
map<string, int> mapp;
int T,m,n;
double rate;
const int INF=1e9;
const int maxn=1005;
double dis[105][105];
double dis2[105][105];
void init()
{
    for(int i=1; i<=n; i++)
        for(int j=1; j<=n; j++)
        {
            if(i==j)
            {
                dis[i][j]=1;
                dis2[i][j]=1;
            }
            else
            {
                dis[i][j]=0;
                dis2[i][j]=0;
            }
        }
}
int main()
{
    int ans=1;
    while(cin>>n)
    {
        if(n==0)
            break;
        init();
        for(int i=1; i<=n; i++)
        {
            cin>>str[i];
            mapp[str[i]]=i;
        }
        cin>>m;
        for(int i=1; i<=m; i++)
        {
            cin>>s1>>rate>>s2;
            dis[mapp[s1]][mapp[s2]]=rate;
            dis2[mapp[s1]][mapp[s2]]=rate;
        }
        for(int k=1; k<=n; k++)
            for(int i=1; i<=n; i++)
                for(int j=1; j<=n; j++)
                {
                    dis2[i][j]=max(dis2[i][j],dis2[i][k]*dis2[k][j]);
                }
        bool flag=0;
        for(int i=1; i<=n; i++)
        {
            if(dis2[i][i]>dis[i][i])
            {
                flag=1;
                break;
            }
        }
        cout<<"Case "<<ans++<<": ";
        if(flag==1)
            cout<<"Yes"<<endl;
        else cout<<"No"<<endl;

    }
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

最短路 dijsktra + floyd 详解

原文链接 最短路径—Dijkstra算法和Floyd算法   注意:以下代码 只是描述思路,没有测试过!!   Dijkstra算法 1.定义概览 Dijkstra(迪杰斯特拉)算法是典型的单源...
  • hlg1995
  • hlg1995
  • 2017年04月19日 08:21
  • 310

图论-最短路-Dijkstra算法&Floyd算 c++

最短路径解决了求解一个图中两顶点之间最短的路径问题。其中Dijkstra算法应用贪心法求解单源点到其余各点的最短路径问题;而Floyd算法则解决了图中任意两点间的最短路径问题。...
  • u011493860
  • u011493860
  • 2013年08月17日 19:58
  • 964

HDU 1874 畅通工程续 + HDU 2544 最短路 最短路水题,floyd水

题目: 1874 http://acm.hdu.edu.cn/showproblem.php?pid=1874 2444 http://acm.hdu.edu.cn/showproblem.php...
  • hcbbt
  • hcbbt
  • 2013年06月16日 20:25
  • 2308

最短路径(Floyd、Dijstra、BellmanFord)

1、迪杰斯特拉(Dijstra) 2、 弗洛伊德(Floyd) 3、 贝尔曼-福特算法(BellmanFord) 1、迪杰斯特拉(Dijstra) 算法描述 : 1)算法思想:设G=(V,E)...
  • hunyxv
  • hunyxv
  • 2017年02月03日 15:49
  • 824

最短路知识点总结(Dijkstra,Floyd,SPFA,Bellman-Ford)

最短路知识点总结(Dijkstra,Floyd,SPFA,Bellman-Ford) Dijkstra算法: 解决的问题:     带权重的有向图上单源最短路径问题。且权重都为非...
  • qq_33406883
  • qq_33406883
  • 2016年07月20日 17:55
  • 1461

poj2240Arbitrage【floyd】

Language: Default Arbitrage Time Limit: 1000MS   Memory Limit: 65536K Total Subm...
  • R1986799047
  • R1986799047
  • 2015年11月22日 20:41
  • 226

最短路算法之Floyd算法

时间:2016/5/6(day6) 目标算法:Floyd算法 应用范围:最短路 算法思路:动态规划的思想,从设有三点i,j,k,从I到k分为两种方法,一种为从i直接到k,另外一种是从I到j再到k。所以...
  • Sara_YF
  • Sara_YF
  • 2016年05月07日 01:04
  • 332

【日常学习】【floyd】codevs1077 多源最短路 题解

题目来源 codevs1077 题目描述 Description 已知n个点(n 现在有Q个询问,每个询问两个正整数,a和b,让你求a到b之间的最短路程。         满足a[i,j]=a...
  • ametake
  • ametake
  • 2015年05月05日 17:31
  • 733

Floyd算法求最短路问题

Floyd算法适用于APSP(All Pairs Shortest Paths,多源最短路径),是一种动态规划算法,稠密图效果最佳,边权可正可负。此算法简单有效,由于三重循环结构紧凑,对于稠密图,效率...
  • lusongno1
  • lusongno1
  • 2016年02月26日 01:14
  • 742

FLOYD 多源最短路

获得所有顶点间的最短路,可以对每个顶点做dijkstra或者bellman,但是dijkstra麻烦而且不能有负边存在,bellman又复杂度太大。Floyd解决多元最短路很直观。 其基本思想是:对...
  • cqlf__
  • cqlf__
  • 2012年01月22日 02:08
  • 1971
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:poj2240Arbitrage(最短路floyd)
举报原因:
原因补充:

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