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. Go实现mqtt服务

    package main import ( "os" "log" "github.com/eclipse/paho.mqtt.golang" ...

  2. Pandas库入门

    pandas库的series类型

  3. [WC2002][洛谷P1578]奶牛浴场

    洛谷题解里那个人可真是话多呢. 题目描述 由于John建造了牛场围栏,激起了奶牛的愤怒,奶牛的产奶量急剧减少.为了讨好奶牛,John决定在牛场中建造一个大型浴场.但是John的奶牛有一个奇怪的习惯,每 ...

  4. 2 js的20/80关键知识

    1. 2 var a = 1; undefined a 1 alert(a); undefined var b = true; var c = "Hi"; undefined al ...

  5. CodeForces 879D Teams Formation

    题意 将一个长度为\(n\)的数组重复\(m\)遍得到一个长度为\(n \times m\)的新序列,然后消掉新序列中连续\(k\)个相同的元素,不断重复这一过程,求最后剩下的序列的长度 分析 首先可 ...

  6. heat模板

    Heat 目前支持两种格式的模板,一种是基于 JSON 格式的 CFN 模板:另外一种是基于 YAML 格式的 HOT 模板.CFN 模板主要是为了保持对 AWS 的兼容性.HOT 模板是 Heat ...

  7. 关于 vee-validate直接引用的方法

    转载于:https://blog.csdn.net/hy111/article/details/79046500?%3E 由于当前项目使用的是基于jQuery的前端结构,尝试在新增需求中使用VUE2, ...

  8. jquery validate 使用示范

    最近应公司要求做了一个jquery的示例文件,包括:模态窗口怎么实现:jquery validate下的校验:怎么做图片特效:怎么实现异步操作:实现图片上传剪切效果等很多特效: 这里把jquery校验 ...

  9. Spring 学习笔记(五)—— Bean之间的关系、作用域、自动装配

    继承 Spring提供了配置信息的继承机制,可以通过为<bean>元素指定parent值重用已有的<bean>元素的配置信息. <?xml version="1 ...

  10. c# json 反序列化 泛型List 2行代码

    List<EncyTable> list = new List<EncyTable>(); var jsonReqeust = "[{ENCY_ID:775,ENCY ...