2种方式直接代码就可以了。注意首次不需要60S的转换

#include <map>
#include <set>
#include <list>
#include <cmath>
#include <ctime>
#include <deque>
#include <stack>
#include <queue>
#include <cctype>
#include <cstdio>
#include <string>
#include <vector>
#include <climits>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#define LL long long
#define PI 3.1415926535897932626
using namespace std;
int gcd(int a, int b) {return a % b == ? b : gcd(b, a % b);}
#define MAXN 105
const int INF = 0x3f3f3f3f;
int T[],N,K;
int w[MAXN][MAXN],d[MAXN];
int src[MAXN];
typedef pair<int,int> pii;
priority_queue<pii,vector<pii>,greater<pii> > q;
void read()
{
memset(w,0x3f,sizeof(w));
for (int i = ; i < N; i++) scanf("%d",&T[i]);
for (int i = ; i < N; i++)
{
int cas = ;
char ch;
do
{
scanf("%d",&src[cas++]);
ch = getchar();
}while (ch != '\n');
for (int j = ; j < cas; j++)
for (int k = j; k < cas; k++)
{
w[src[j]][src[k]] = min(w[src[j]][src[k]],abs(src[k] - src[j]) * T[i]);
w[src[k]][src[j]] = min(w[src[k]][src[j]],abs(src[k] - src[j]) * T[i]);
}
}
}
void SPFA()
{
bool inq[MAXN];
memset(inq,false,sizeof(inq));
memset(d,0x3f,sizeof(d));
d[] = ;
queue<int>que;
while (!que.empty()) que.pop();
que.push();
while (!que.empty())
{
int u = que.front();que.pop();
inq[u] = false;
for (int i = ; i < MAXN; i++)
{
if (u == )
{
if (d[i] > d[u] + w[u][i])
{
d[i] = d[u] + w[u][i];
if (!inq[i])
{
inq[i] = true;
que.push(i);
}
}
}
else
{
if (d[i] > d[u] + w[u][i] + )
{
d[i] = d[u] + w[u][i] + ;
if (!inq[i])
{
inq[i] = true;
que.push(i);
}
}
}
}
}
}
void dijkstra()
{
memset(d,0x3f,sizeof(d));
d[] = ;
q.push(make_pair(d[],));
while (!q.empty())
{
pii t = q.top();q.pop();
int u = t.second;
if (t.first != d[u]) continue;
for (int v = ; v < MAXN; v++)
{
if (u == )
{
if (d[v] > d[u] + w[u][v])
{
d[v] = d[u] + w[u][v];
q.push(make_pair(d[v],v));
}
}
else
{
if (d[v] > d[u] + w[u][v] + )
{
d[v] = d[u] + w[u][v] + ;
q.push(make_pair(d[v],v));
}
}
}
}
}
int main()
{
//freopen("sample.txt","r",stdin);
while (scanf("%d%d",&N,&K) != EOF)
{
read();
SPFA();
//dijkstra();
if (d[K] == INF) puts("IMPOSSIBLE");
else printf("%d\n",d[K]);
}
return ;
}

UVA 10801 Lift Hopping 最短路的更多相关文章

  1. uva 10801 - Lift Hopping(最短路Dijkstra)

    /* 题目大意: 就是一幢大厦中有0-99的楼层, 然后有1-5个电梯!每个电梯有一定的上升或下降速度和楼层的停止的位置! 问从第0层楼到第k层最少经过多长时间到达! 思路:明显的Dijkstra , ...

  2. UVA 10801 Lift Hopping 电梯换乘(最短路,变形)

    题意: 有n<6部电梯,给出每部电梯可以停的一些特定的楼层,要求从0层到达第k层出来,每次换乘需要60秒,每部电梯经过每层所耗时不同,具体按 层数*电梯速度 来算.问经过多少秒到达k层(k可以为 ...

  3. UVa 10801 - Lift Hopping(dijkstra最短路)

    根据题意,以每一层楼为顶点,每个电梯可以到达的两层楼之间的秒数为每一条边的权值,以此构建一个无向图.然后利用dijkstra求出最短的时间,注意每次换乘电梯需要等待60s(因为同一个电梯上的楼层是相互 ...

  4. UVa 10801 Lift Hopping (Dijkstra)

    题意:有一栋100层的大楼(标号为0~99),里面有n个电梯(不超过5个),以及要到达的层数(aid),然后是每个电梯走一层所需的时间, 再n行就是对应每个电梯可以到达的层数,数量不定.然后每装换一次 ...

  5. UVa 10801 Lift Hopping / floyd

    乘电梯 求到目标层的最短时间 有n个电梯 换一个电梯乘需要额外60秒 所以建图时每个电梯自己能到的层数先把时间算好 这是不需要60秒的 然后做floyd时 如果松弛 肯定是要换电梯 所以要加60秒 # ...

  6. UVA 10801 Lift Hopping

    算是一道需要动脑筋的最短路问题了,关键在于建图部分,对于n个电梯中每一个都要经过cnt个楼层,a[0],a[1],a[2],a[3],a[4],......a[cnt-1],那么对于任意两个楼层a[j ...

  7. UVa 10801 Lift Hopping【floyd 】

    题意:给出n个电梯,每个电梯的运行时间,每个电梯只能在相应的楼层停靠,而且没有楼梯,再给出想去的楼层,问从0层能否到达想去的楼层,求到达的最短时间 建图还是没有建出来--- 因为n<100,可以 ...

  8. 紫书 习题 11-7 UVa 10801 (单源最短路变形)

    把每个电梯口看作一个节点, 然后计算边的权值的时候处理一下, 就ok了. #include<cstdio> #include<vector> #include<queue ...

  9. UVA 11248 - Frequency Hopping(网络流量)

    UVA 11248 - Frequency Hopping 题目链接 题意:给定一个网络,如今须要从1到N运输流量C,问是否可能,假设可能输出可能,假设不可能,再问能否通过扩大一条边的容量使得可能,假 ...

随机推荐

  1. Linux之rsync同步工具介绍+inotify同步

    1.rsync介绍 Rsync是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份的优秀工具.Rsync软件适用于unix/linux/windows等多种操作平台. rsync, ...

  2. linux c 调用子文件函数

    今天在学习初级linux c的时候遇到了如下问题:通过主函数调用同路径下的子文件函数调用失败.博主是这样一一解决的: 首先:hello.c: hello.c: #include<bool.c&g ...

  3. python, 面向对象编程Object Oriented Programming(OOP)

    把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行.为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数 ...

  4. 7.Mongodb安全性流程

    1.安全性流程 2.超级管理员 为了更安全的访问mongodb,需要访问者提供用户名和密码,于是需要在mongodb中创建用户 采用了角色-用户-数据库的安全管理方式 常用系统角色如下: root:只 ...

  5. Android 图片放错位置会拉伸变形

    今天做了一个很小的需求,然后需要图片,我给ui要图片.直接给了我三套,还命名 x . xx. 2k 真的一开始都不知道.没有玩过这么正规的.我就用了一张,放到了hdpi下面. 后来同事帮我才知道, 图 ...

  6. 手把手教你如何逐步安装OpenStack

    [TechTarget中国原创] 尽管OpenStack官方提供的在线安装教程和分步向导能够为管理员提供很大帮助,但是依然存在很多不尽如人意的地方.因此在Ubuntu上安装OpenStack的过程当中 ...

  7. js 请求异常重连或断线后联网重连机制(ajax)

    转到到 https://blog.csdn.net/mengtoumingren/article/details/80296788

  8. Jmeter beanshell preprocessor随机添加任意多个请求参数

    介绍下本次使用beanshell preprocessor的原因: 1.系统下可添加产品,一个产品可以有多个产品主题(比如:产品A(杭州三日游)拥有三个主题(研学.红学.夏令营)),我们在每次添加产品 ...

  9. QA面试题:之一(中英文题目、难度:简单)

    QA面试题:之一(中英文题目.难度:简单)

  10. (原)Unreal渲染相关的缓冲区 及其 自定义代码几种抓取

    @authot: 白袍小道   转载说明那啥即可. (图片和本文无关,嘿嘿,坑一下)         以下为Unreal4.18版本中对GPUBuffer部分的分析结果 (插入:比之够着,知至目的) ...