L2-001. 紧急救援(最短路的变形)*
#include <cstdio>
#include <algorithm>
using namespace std;
int const MAX = ;
int const INF = 0x3fffffff;
int mp[MAX][MAX], val[MAX], path[MAX], dis[MAX], re[MAX], totval[MAX], pathnum[MAX];
bool vis[MAX];
int n, m, s, d; void Dijkstra(int v0)
{
for(int i = ; i < n; i++)
dis[i] = INF;
vis[v0] = true;
dis[v0] = ;
totval[v0] = val[v0];
pathnum[v0] = ;
for(int i = ; i < n; i++)
{
if(mp[v0][i] != INF && i != v0)
{
dis[i] = mp[v0][i];
path[i] = v0;
totval[i] = val[v0] + val[i];
pathnum[i] = ;
}
}
for(int i = ; i < n - ; i++)
{
int mi = INF, mival = , u = v0;
for(int j = ; j < n; j++)
{
if(!vis[j] && dis[j] < mi)
{
mi = dis[j];
u = j;
}
}
vis[u] = true;
for(int j = ; j < n; j++)
{
if(!vis[j])
{
if(dis[u] + mp[u][j] < dis[j])
{
pathnum[j] = pathnum[u];
dis[j] = dis[u] + mp[u][j];
totval[j] = totval[u] + val[j];
path[j] = u;
}
else if(dis[u] + mp[u][j] == dis[j])
{
pathnum[j] += pathnum[u];
if(totval[j] < totval[u] + val[j])
{
totval[j] = totval[u] + val[j];
path[j] = u;
}
}
}
}
}
} int main()
{
scanf("%d %d %d %d", &n, &m, &s, &d);
for(int i = ; i < n; i++)
scanf("%d", &val[i]);
for(int i = ; i < n; i++)
for(int j = ; j < n; j++)
mp[i][j] = INF;
int x, y, l;
for(int i = ; i < m; i++)
{
scanf("%d %d %d", &x, &y, &l);
mp[x][y] = min(mp[x][y], l);
mp[y][x] = mp[x][y];
}
Dijkstra(s);
int num = , cur = d;
while(cur != s)
{
re[num ++] = cur;
cur = path[cur];
}
re[num ++] = s;
printf("%d %d\n", pathnum[d], totval[d]);
for(int i = num - ; i > ; i--)
printf("%d ", re[i]);
printf("%d\n", re[]);
}
L2-001. 紧急救援(最短路的变形)*的更多相关文章
- 天梯杯 PAT L2-001. 紧急救援 最短路变形
作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上.当其他城市有紧急求 ...
- PAT-GPLT训练集 L2-001 紧急救援(最短路)
PAT-GPLT训练集 L2-001 紧急救援 题目大意:求最短路的条数,最短路中的权重和的最大值和这条最短路的路线 分析:使用dijkstra算法求出最短路,并且对dijkstra算法进行变化,设起 ...
- PTA L2-001 紧急救援-最短路(Dijkstra)多条最短路找最优解并输出路径 团体程序设计天梯赛-练习集
L2-001 紧急救援 (25 分) 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快 ...
- 拼题 L2-001 紧急救援 最短路计数+记录路径
https://pintia.cn/problem-sets/994805046380707840/problems/994805073643683840 L2-001 紧急救援 (25 分) 作 ...
- UVA 12661 Funny Car Racing 有趣的赛车比赛(最短路,变形)
题意:赛道有n个交叉点,和m条单向路径(有重边),每条路都是周期性关闭的,且通过仍需一段时间.在比赛开始时,所有道路刚好打开,选择进入该道路必须满足“在打开的时间段进入,在关闭之前出来”,即不可在路上 ...
- UVALive 4128 Steam Roller 蒸汽式压路机(最短路,变形) WA中。。。。。
题意: 给一个由n*m个正方形格子组成的矩形,其中每个格子的边都是可以走的,长度给定,规定:如果在进入该路前需要拐弯,或者走完该路需要拐弯,都是需要付出双倍距离的(每条路最多算2倍).问从起点到终点的 ...
- DAG求最短路--TSP变形--状压dp
DAG状压dp的一种 题目: $m$个城市,$n$张车票,第i张车票上的时间是$t_i$, 求从$a$到$b$的最短时间,如果无法到达则输出“impossible” 解法: 考虑状态:“现在在城市$v ...
- UVA 10801 Lift Hopping 电梯换乘(最短路,变形)
题意: 有n<6部电梯,给出每部电梯可以停的一些特定的楼层,要求从0层到达第k层出来,每次换乘需要60秒,每部电梯经过每层所耗时不同,具体按 层数*电梯速度 来算.问经过多少秒到达k层(k可以为 ...
- poj1797(最短路小变形)
题目连接:http://poj.org/problem?id=1797 题意: 分析:dp[i]表示到达i点的过程中的最大承受重量,更新到i点时可能有多条路径,由优先队列堆出最大的那条即可. #inc ...
随机推荐
- chrome 浏览器去掉输入框背景透明色
chrome浏览器选择记住密码的账号,输入框会自动加上黄色的背景,有些设计输入框是透明背景的,需要去除掉这个黄色的背景: 这个黄色背景是谷歌浏览器默认的样式 user agent stylesheet ...
- hdu-6406-dp+ST表
Taotao Picks Apples Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Ot ...
- TP5+jquery即点既改
//表单 {volist name="date" id="v"}<tr id="{$v.id}"> <td>< ...
- 数据结构与算法之PHP查找算法(哈希查找)
一.哈希查找的定义 提起哈希,我第一印象就是PHP里的关联数组,它是由一组key/value的键值对组成的集合,应用了散列技术. 哈希表的定义如下: 哈希表(Hash table,也叫散列表),是根据 ...
- 在ASP.NET MVC 框架中调用 html文件及解析get请求中的参数值
在ASP.NET MVC 框架中调用 html文件: public ActionResult Index() { using (StreamReader sr = new StreamReader(P ...
- echarts3 使用总结
由于项目需要自学了echarts,下面将学到的东西总结如下,如果有哪里写的不好,请批评指正 一.前期准备 1.使用echarts之前先要引入echarts.js,js可以到官网下载 2.写一个div容 ...
- spring-boot 全面认知
https://blog.csdn.net/ityouknow/article/details/80490926,这个链接非常全面的讲解了spring-boot的内容,从初级到中级,到最后的提升,觉得 ...
- 网络编程socket方法
1.理解socket Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面 ...
- 一、持久层框架(Hibernate)
一.Hibernate 使用JDBC做数据库相关功能开发会做很多重复性的工作,创建连接,关闭连接,把字段逐一映射到属性中等.Hibernate把这些进行封装起来,使得数据库访问变得轻松简单. 1.创建 ...
- MapReduce- 数据的排序处理
MapReduce- 数据的排序处理 package com.huhu.day02; import java.io.DataInput; import java.io.DataOutput; impo ...