题目大意:

给定 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. 没有找到mspdb80.dll,因此这个应用程序未能启动...问题解决

    这里主要针对使用link.exe进行SIG文件制作时,报错. 首先下载,mspdb80.dll:https://www.lanzous.com/i59dgfi 将dll文件移动到我的电脑(32位)C: ...

  2. 关于微信小程序的一些总结

    mpvue? {{}} 在vue和小程序中的区别? 01 小程序中{{}}和vue中的{{}}用法基本一致,可以显示data中的数据,可以写表达式 不一样的地方? 01 小程序的{{}}可以写在属性中 ...

  3. OC学习--继承

     1.什么是继承? 继承是指一个对象直接使用另一对象的属性和方法. 继承可以使得子类具有父类的各种属性和方法,而不是再次编写相同的代码.在子类继承父类的同时,可以重新定义某些属性,并重写某些方法, 即 ...

  4. Spring Boot 项目 Maven 配置

    在配置基于Maven的Spring Boot项目的过程中,打包运行出现了一系列错误. 比如: mvn 中没有主清单属性.java.lang.NoClassDefFoundError: org/spri ...

  5. Linux学习笔记之档案权限与目录配置

    一. 档案权限与目录配置用户的属性信息: /etc/passwd用户的密码信息: /etc/shadow组的信息:     /etc/group 每个用户都有唯一的UID供系统识别sudo -i 输入 ...

  6. 前端学习(三十四)对象&模块化(笔记)

    人,工人 //类的定义    function Person(name,age){ //构造函数        //工厂模式        //1.原料        //var obj = new ...

  7. RBAC用户权限管理数据库设计的图文详解

    RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角色- ...

  8. python基础:8.正则表达式

    1.概念 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑. re模块的常见方法: ...

  9. Random 生成随机数

    Random类 (java.util) Random类中实现的随机算法是伪随机,也就是有规则的随机.在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要 ...

  10. Ubuntu 16.04配置vncviewer

    网上有各种各样的教程,既混乱又复杂.这是提供一个亲自测试可用的配置方案,十分简单,桌面环境选用xfce,Ubuntu版本是16.04. 1 安装 Xfce 和 TightVNC sudo apt in ...