题目大意:

给定 n m s t ;表示n个点编号为0~n-1 m条边 起点s终点t

接下来一行给定n个数;表示第i个点的救援队数量

接下来m行给定u v w;表示点u到点v有一条长度为w的边

求从s到t的最短路有几条

一条路上可以集合的救援队最多有多少

输出路径

#include <bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
#define LL long long
#define inc(i,j,k) for(int i=j;i<=k;i++)
#define dec(i,j,k) for(int i=j;i>=k;i--)
#define gcd(i,j) __gcd(i,j)
#define mem(i,j) memset(i,j,sizeof(i))
const int N=2e5+;
const int mod=1e9+; int n,m,s,t;
int V[N];
struct NODE{ int to,len; };
vector <NODE> G[N];
int dis[N], num[N];
int sumV[N], pre[N];
bool vis[N]; int main()
{
while(~scanf("%d%d%d%d",&n,&m,&s,&t)) {
inc(i,,n-) scanf("%d",&V[i]);
inc(i,,n-) G[i].clear();
while(m--) {
int u,v,w; scanf("%d%d%d",&u,&v,&w);
G[u].push_back({v,w});
G[v].push_back({u,w});
}
mem(sumV,); sumV[s]=V[s]; // 到i点的最短路可集合sumV[i]救援队
mem(dis,INF); dis[s]=; // 到i点的最短路长度为dis[i]
mem(num,); num[s]=; // 到i点的最短路有num[i]条
mem(pre,-); mem(vis,); // pre记录路径前驱 vis标记走过
while() {
int u, mini=INF;
inc(i,,n-)
if(!vis[i] && dis[i]<mini)
mini=dis[i], u=i;
if(mini==INF) break;
vis[u]=;
int all=G[u].size();
inc(i,,all-) {
NODE v=G[u][i];
if(vis[v.to]) continue;
if(dis[v.to]>dis[u]+v.len) {
sumV[v.to]=sumV[u]+V[v.to];
dis[v.to]=dis[u]+v.len;
num[v.to]=num[u];
pre[v.to]=u;
} else if(dis[v.to]==dis[u]+v.len) {
num[v.to]+=num[u];
if(sumV[v.to]<sumV[u]+V[v.to]) {
sumV[v.to]=sumV[u]+V[v.to],
pre[v.to]=u;
}
}
}
}
printf("%d %d\n",num[t],sumV[t]);
stack <int> s; int c=;
while(t!=-) s.push(t), t=pre[t], c++;
while(!s.empty()) {
printf("%d",s.top()); s.pop();
if(--c==) printf("\n");
else printf(" ");
}
} return ;
}

PTA 紧急救援 /// dijkstra 最短路数 输出路径的更多相关文章

  1. pta—紧急救援 (dijkstra)

    题目连接:https://pintia.cn/problem-sets/994805046380707840/problems/994805073643683840 题面: 作为一个城市的应急救援队伍 ...

  2. LA 2957 最大流,最短时间,输出路径

    题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=1 ...

  3. PTA 7-33 地下迷宫探索(深搜输出路径)

    地道战是在抗日战争时期,在华北平原上抗日军民利用地道打击日本侵略者的作战方式.地道网是房连房.街连街.村连村的地下工事,如下图所示. 我们在回顾前辈们艰苦卓绝的战争生活的同时,真心钦佩他们的聪明才智. ...

  4. PAT甲题题解-1030. Travel Plan (30)-最短路+输出路径

    模板题最短路+输出路径如果最短路不唯一,输出cost最小的 #include <iostream> #include <cstdio> #include <algorit ...

  5. dijstra+输出路径总结

    #include<iostream> #include<math.h> #include<memory.h> using namespace std; #defin ...

  6. VS 工程的 输出路径和工作路径的区别

    输出路径,是vs编译项目生成可执行文件的路径:工作路径是环境变量,比如我们在程序中写相对路径,就是以这个路径为基础的.在默认情况下,输出路径和工作路径都不写的话,默认是程序的bin下面的debug或者 ...

  7. HD1385Minimum Transport Cost(Floyd + 输出路径)

    Minimum Transport Cost Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/O ...

  8. C++builder XE 安装控件 及输出路径

    C++builder XE 安装控件 与cb6不一样了,和delphi可以共用一个包. 启动RAD Studio.打开包文件. Project>Options>Delphi Compile ...

  9. HDU 1385 Minimum Transport Cost (最短路,并输出路径)

    题意:给你n个城市,一些城市之间会有一些道路,有边权.并且每个城市都会有一些费用. 然后你一些起点和终点,问你从起点到终点最少需要多少路途. 除了起点和终点,最短路的图中的每个城市的费用都要加上. 思 ...

随机推荐

  1. 攻防世界--csaw2013reversing2

    测试文件:https://adworld.xctf.org.cn/media/task/attachments/3f35642056324371b913687e770e97e6.exe 1.准备 打开 ...

  2. 使用 typeof bar === "object" 来确定 bar 是否是对象的潜在陷阱是什么?

    使用typeof首先要明白 typeof 可以检测什么. typeof 主要用于检测基本数据类型.typeof尽量不要用来检测复杂数据类型. typeof 检测null 和 数组 的时候 结果也是ob ...

  3. elasticsearch 基础 —— _mget取回多个文档及_bulk批量操作

    取回多个文档 Elasticsearch 的速度已经很快了,但甚至能更快. 将多个请求合并成一个,避免单独处理每个请求花费的网络延时和开销. 如果你需要从 Elasticsearch 检索很多文档,那 ...

  4. Java中的关键字--synchronized

    在并发编程中,synchronized关键字是常出现的角色.之前我们都称呼synchronized关键字为重量锁,但是在JDK1.6中对synchronized进行了优化,引入了偏向锁.轻量锁.本篇介 ...

  5. 【LeetCode】栈 stack(共40题)

    [20]Valid Parentheses (2018年11月28日,复习, ko) 给了一个字符串判断是不是合法的括号配对. 题解:直接stack class Solution { public: ...

  6. SpringBoot---提供的自动配置

    1.自动配置的ViewResolver 1.1.ContentNegotiatingViewResolver 1.2.BeanNameViewResolver 1.3.InternalResource ...

  7. centos 6.5 安装 mysql 5.6.19

    首先要做点清洁工作,检查是否存在 mysql 相关的库或安装文件,有则删除 rpm -qa|grep -i mysql rpm -e --nodeps filename 如果是重新安装 mysql,还 ...

  8. Java Web学习总结(10)学习总结-EL表达式

    一,EL 表达式概述(EL主要从域中取数据) EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,EL出现的目的是要替代jsp页面中脚本的编写. 二,EL从域中 ...

  9. 【Linux】ssh执行远程命令awk 参数报错问题

    ssh  ip    sudo docker ps -a | grep none | awk '{print \$1}'| sed 's/%//g' $1前面加上转移符就好

  10. ARC093 F Dark Horse——容斥

    题目:https://atcoder.jp/contests/arc093/tasks/arc093_d #include<cstdio> #include<cstring> ...