#2093. 紧急救援

紧急救援

No testdata at current.

题目描述

作为一个城市的应急救援队伍负责人,你有一张特殊的全国地图。地图上有若干个分散的城市,以及若干条连接城市的快速道路。

每个城市拥有一定数量的救援队,每条快速道路也都有对应的长度。

当接到某个城市的紧急求助电话时,你的任务是带领救援队尽快赶往目的地;同时,在所有最短路径中,还要使沿途能够召集到的救援队总数尽可能多

请你求出:

  • 从出发城市到目标城市的最短路径条数;
  • 在这些最短路径中,最多能够召集到的救援队数量;
  • 以及对应的一条最优路径。

输入格式

从标准输入按以下格式读取数据:

NN MM SS DD

w0w_0 w1w_1 \dots wN1w_{N-1}

u1u_1 v1v_1 l1l_1

u2u_2 v2v_2 l2l_2

\vdots

uMu_M vMv_M lMl_M

其中:

  • 第一行输入 44 个正整数 N,M,S,DN,M,S,D,分别表示城市个数、快速道路条数、出发城市编号和目标城市编号。
  • 城市编号为 0(N1)0 \sim (N-1)
  • 第二行输入 NN 个正整数,其中第 ii 个数表示第 ii 个城市拥有的救援队数量。
  • 接下来 MM 行,每行输入三个整数 u,v,lu,v,l,表示城市 uu 和城市 vv 之间有一条长度为 ll 的快速道路。

数据范围

  • 2N5002 \le N \le 500
  • 快速道路长度为不超过 500500 的整数
  • 输入保证从 SSDD 一定可达
  • 输入保证最优解唯一

输出格式

第一行输出两个整数:

  • 最短路径的条数;
  • 在所有最短路径中,最多能够召集到的救援队数量。

第二行输出一条从 SSDD 的最优路径上依次经过的城市编号。

输出的整数之间用一个空格分隔,行末不能有多余空格。

样例

4 5 0 3
20 30 40 10
0 1 1
1 3 2
0 3 3
0 2 2
2 3 2
2 60
0 1 3