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;
}




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

hdu1217(floyd算法)

Description Arbitrage is the use of discrepancies in currency exchange rates to transform one u...
  • martinue
  • martinue
  • 2015年08月19日 22:16
  • 223

Floyd算法分析和实现

其实我觉得这个算法还是很简单的,但是看网上的资料感觉很高深,说的我稀里糊涂的。难道是我想错啦?希望大神帮我指正(真心没自信)。。谢谢。 /* Floyd算法:可以解决任何两点间的最短距离问题。而d...
  • keep_moving_cqu
  • keep_moving_cqu
  • 2013年11月03日 01:16
  • 1421

Floyd算法——C++实现版

// Floyd.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include #define MAX_VALUE 1000 #de...
  • u012102306
  • u012102306
  • 2015年11月16日 16:40
  • 1835

Floyd算法的C&python实现及对比

本次我要给大家带来的是Floyd算法,分别用C语言和python实现,并回溯出完整路径。支持无向赋权图、有向赋权图,不支持权为负数的情况。...
  • zhouweilin56091
  • zhouweilin56091
  • 2015年08月26日 00:21
  • 1276

Dijkstra算法、Floyd算法的区别与联系,并由此谈到greedy和DP

首先,Dijkstra算法与Floyd算法都是广度优先搜索的算法。都可以用来求单源点到其他所有点的最短路径。那么这两者的原理分别是怎样?彼此又有什么区别呢?求此有向图中起点1到其他所有点的最短距离在本...
  • liuyanling_cs
  • liuyanling_cs
  • 2017年02月21日 22:44
  • 2365

Floyd最小环算法

问题描述: 给你一张无向图,定义环为从i出发到达j然后从j返回i并且所有点都只经过一次(最少为3个点),求所有环当中经过路径                   最小的环 算法描述:首先容易想到的是暴...
  • qq_34731703
  • qq_34731703
  • 2017年01月25日 13:07
  • 694

最短路径问题---Floyd算法详解

前言 Genius only means hard-working all one’s life. Name:Willam Time:2017/3/81、最短路径问题介绍问题解释: 从图中的...
  • qq_35644234
  • qq_35644234
  • 2017年03月11日 17:01
  • 22026

Floyd算法求最短路径并记录路径

基本模型从最开始只允许经过1号顶点中转,接下来允许经过1号和2号中转……..允许经过1~n号所有的顶点进行中转,求任意两点间的最短路程。用一句话概括就是:从i号顶点到j号顶点之经过前k号的最短路程。实...
  • nghuyong
  • nghuyong
  • 2016年12月19日 13:11
  • 2732

POJ1734(floyd求最小环的路径)

题目:Sightseeing trip   题意:求一个图中最小环,输出路径。 #include #include #include using namespace std; ...
  • ACdreamers
  • ACdreamers
  • 2013年07月10日 16:16
  • 2203

Dijkstra、Bellman_Ford、SPFA、Floyd算法复杂度比较

Dijkstra:适用于权值为非负的图的单源最短路径,用斐波那契堆的复杂度O(E+VlgV) BellmanFord:适用于权值有负值的图的单源最短路径,并且能够检测负圈,复杂度O(VE) SP...
  • XLJ_XLJ
  • XLJ_XLJ
  • 2016年08月26日 15:15
  • 1576
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hdu1217 floyd
举报原因:
原因补充:

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