HDU1690(Floyd最短路)

水题直接贴代码

#include <iostream>
#include <string.h>
#include <queue>
#include <vector>
#include <utility>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

#define maxn 1200
#define LL __int64
const LL  INF = 100000000002;
LL sit[maxn];
LL dis[maxn][maxn];
int  main()
{
#ifdef xxz
    freopen("in.txt","r",stdin);
#endif // xxz
    LL Case,L1,L2,L3,L4,C1,C2,C3,C4,n,m,v,T;
    cin>>T;
    Case = 1;
    while(T--)
    {
        cin>>L1>>L2>>L3>>L4>>C1>>C2>>C3>>C4;
        cin>>n>>m;
        for(LL i = 1; i <= n; i++)
        {
            cin>>sit[i];
            dis[i][i] = 0;
            for(LL j = 1; j < i; j++ )
            {
                LL temp = max(sit[i],sit[j]) - min(sit[i],sit[j]);
                if(temp > L4)  v = INF;
                else if(temp > L3) v = C4;
                else if(temp > L2) v= C3;
                else if(temp > L1) v = C2;
                else if(temp > 0) v = C1;
                else v = 0;
                dis[i][j] = dis[j][i] = v;
            }
        }

        for(LL k = 1; k <= n; k++)
            for(LL i = 1; i <= n; i++)
                for(LL j = 1; j<= n; j++)
                {
                    dis[i][j] = min(dis[i][j],dis[i][k] + dis[k][j]);
                }
        printf("Case %d:\n",Case++);
        for(LL i = 0; i < m; i++)
        {
            LL a,b;
            cin>>a>>b;
            if(dis[a][b]== INF ) printf("Station %I64d and station %I64d are not attainable.\n",a,b);
            else printf("The minimum cost between station %I64d and station %I64d is %I64d.\n",a,b,dis[a][b]);
        }
    }
    return 0;
}
时间: 2024-10-20 14:25:25

HDU1690(Floyd最短路)的相关文章

【啊哈!算法】算法6:只有五行的Floyd最短路算法

暑假,小哼准备去一些城市旅游.有些城市之间有公路,有些城市之间则没有,如下图.为了节省经费以及方便计划旅程,小哼希望在出发之前知道任意两个城市之前的最短路程. 上图中有4个城市8条公路,公路上的数字表示这条公路的长短.请注意这些公路是单向的.我们现在需要求任意两个城市之间的最短路程,也就是求任意两个点之间的最短路径.这个问题这也被称为“多源最短路径”问题. 现在需要一个数据结构来存储图的信息,我们仍然可以用一个4*4的矩阵(二维数组e)来存储.比如1号城市到2号城市的路程为2,则设e[1][2]

HDU 1385 Minimum Transport Cost(Floyd 最短路 打印路径)

HDU 1385 大意: 有N个城市,然后直接给出这些城市之间的邻接矩阵,矩阵中-1代表那两个城市无道路相连,其他值代表路径长度. 如果一辆汽车经过某个城市,必须要交一定的钱(可能是过路费). 现在要从a城到b城,花费为路径长度之和,再加上除起点与终点外所有城市的过路费之和. 求最小花费,如果有多条路经符合,则输出字典序最小的路径. 思路: Floyd求最短路,打印路径即可. 1 /*--------------------------------------------------------

poj2607Fire Station(floyd最短路)

题目链接: 啊哈哈,点我带我 这道题目当时一看觉得很熟悉,但是后来越想越混乱,搞得最后题目都没搞清楚...比赛的时候不知道怎么想的,但是大致思想是对的.... 题意: 这道题目是讲原来镇上有若干个加油站,但是镇上的居民觉得消防站的距离李自己家太远,所以决定在居民点键一个消防站,要使离居民点的最大距离最小.. 思路:毫无疑问是最短路...但是这题数据太多..所以预处理的时候用floyd求出两个 任意两点间的距离,然后用加油站去更新到到各个居民点的最短距离..那么枚举所有加油站后就会得到所有到居民点

HDU 2833 WuKong(floyd最短路)

题目地址:HDU 2833 这题想到了最后是通过dis[s][t]==dis[s][i]+dis[i][j]+dis[j][t]的思路来判定是否属于最短路的一条..但是没想到可以用floyd来找最短路中的点数...最短路还是太渣了..好多性质都不会利用.. 这题的思路就是通过floyd对每两个点之间的最短路条数进行计数,然后通过上面的公式(对两条路线均要判定,都符合才说明都可以走),再找最短路中的最大点数. 代码如下: #include <iostream> #include <stdi

POJ2112Optimal Milking(二分+floyd最短路+网络流)

题目地址:http://poj.org/problem?id=2112 最近忙着预习课本备考,没怎么刷题,(我是真的有在好好看书..)不敲题还是手痒痒,马上就邀请赛了,还是每晚睡觉前都拿来刷题吧.白天的时间足够了. 话说这题调了一晚上...一直以为是几天没敲状态下滑..(虽然也没几天..)当发现错误的时候才发现原来是少敲了个字母...而且我一般很少在bfs的那个地方出错,错误地方也很隐蔽..所以找了一晚上,真是敲错一个字母成千古恨. 这题大概是职业生涯目前为止敲得最长的一道算法题了..(模拟题除

只有五行的Floyd最短路算法

暑假,小哼准备去一些城市旅游.有些城市之间有公路,有些城市之间则没有,如下图.为了节省经费以及方便计划旅程,小哼希望在出发之前知道任意两个城市之前的最短路程. 上图中有4个城市8条公路,公路上的数字表示这条公路的长短.请注意这些公路是单向的.我们现在需要求任意两个城市之间的最短路程,也就是求任意两个点之间的最短路径.这个问题这也被称为"多源最短路径"问题. 现在需要一个数据结构来存储图的信息,我们仍然可以用一个4*4的矩阵(二维数组e)来存储.比如1号城市到2号城市的路程为2,则设e[

Wikioi 1020 孪生蜘蛛 Label:Floyd最短路

题目描述 Description 在G城保卫战中,超级孪生蜘蛛Phantom001和Phantom002作为第三层防卫被派往守护内城南端一带极为隐秘的通道. 根据防护中心的消息,敌方已经有一只特种飞蛾避过第二层防卫,直逼内城南端通道入口.但优秀的蜘蛛已经在每个通道内埋下了坚固的大网,无论飞蛾进入哪个通道,他只有死路一条!(因为他是无法挣脱超级蛛网的) 现在,001和002分别驻扎在某两个通道内.各通道通过内线相通,通过每条内线需要一定的时间.当特种飞蛾被困某处,001或002会迅速赶来把它结果掉

HDU 4034 Graph Floyd最短路

原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4034 题意: 给你一个最短路的表,让你还原整个图,并使得边最少 题解: 这样想..这个表示通过floyd得到的,那么如果从u到v没有小于等于边(u,v)的路径,那么边(u,v)就是必须的,否则从u到v需要走更远的路.如果有路径和边(u,v)是一样的,那么边(u,v)就是不需要的,这是因为,任何需要从u到v的路径都可以用另外一条代替.如果有小于边(u,v)的,那么这就是个非法的最短路表. 代码: #i

HDU 5137 How Many Maos Does the Guanxi Worth (14广州 Floyd 最短路)

How Many Maos Does the Guanxi Worth Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java/Others) Total Submission(s): 468    Accepted Submission(s): 164 Problem Description "Guanxi" is a very important word in Chinese. I