题目大意:

给定 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 ;
}

最新文章

  1. webpack模块加载css文件及图片地址
  2. Python 数据类型及其用法
  3. Redis基本配置
  4. python :页面布局 ,后台管理页面之左侧菜单跟着滚动条动
  5. Android --Android Stuido 导入jar包
  6. Script to compile invalid objects in DB
  7. Program E-- CodeForces 18C
  8. 《Write Optimized B-Trees》读书报告
  9. LCS最长公共子序列
  10. android 64 sd卡读写的操作
  11. Noah的学习笔记之Python篇:命令行解析
  12. CSS中link与import的区别
  13. UFS 介绍 1[【转】
  14. sessionStorage和localStorage
  15. Bug:src/lxml/lxml.etree.c:84:20: 致命错误:Python.h:没有那个文件或目录
  16. HighCharts使用总结
  17. php中的mysql_fetch_row,mysql_fetch_array,mysql_fetch_object
  18. 20180615 wdcp 域名解析问题
  19. Ajax的基础应用
  20. 【English】20190430

热门文章

  1. 【学习总结】java数据结构和算法-第二章-数据结构和算法概述
  2. 从0构建webpack开发环境(三) 开发环境以及 webpack-dev-server 的使用
  3. JS的组成和变量
  4. R语言中的数据分析函数
  5. 135-基于TMS320C6678、FPGA XC5VSX95T的2路Full模式Camera Link输入双目视觉处理平台
  6. shell 单行多行注释
  7. 为什么要用unittest
  8. JDBC简单总结
  9. pythonerror ValueError:invalid literal for int() with base 10: &#39;3.14&#39;
  10. SpringIntegration---MongDB