#1195. 灾后重建

灾后重建

题目背景

地震损坏了 B 地区的村庄,公路本身完好。重建期间,任何一端尚未修复的道路都不能通行。只有两端的村庄均完成重建,道路才会开放,行程中也只能经过已恢复的村庄。

题目描述

B 地区的 NN 个村庄编号为 00 到 N−1N-1,有 MM 条双向公路。所有村庄同时开始重建,村庄 ii 在第 tit_i 天重建完成,当天即可通行。若 ti=0t_i=0,表示该村庄没有受损,从一开始就能通行。

现在给出各村庄的重建时间和所有公路的长度,再给出 QQ 个询问 (x,y,t)(x,y,t)。对每个询问,求第 tt 天从村庄 xx 前往村庄 yy 的最短路程。起点、终点和沿途经过的每个村庄都必须在当天或此前完成重建。若端点仍未开放,或这些已开放的村庄间没有可行路线,输出 −1-1。

输入格式

第一行给出村庄数 NN 与公路数 MM。第二行给出 NN 个非负整数 t0,t1,…,tN−1t_0,t_1,\ldots,t_{N-1},按编号列出村庄重建完成的日期,且 t0≤t1≤⋯≤tN−1t_0\le t_1\le\cdots\le t_{N-1}。

随后 MM 行各含三个非负整数 i,j,wi,j,w,表示村庄 ii 与 jj 间有一条长度为 ww 的公路。保证 i≠ji\ne j、w≤10000w\le10000,且任意两个村庄之间至多有一条公路。

第 M+3M+3 行是正整数 QQ。再往下的 QQ 行,每行用三个非负整数 x,y,tx,y,t 表示一次询问,即第 tt 天从 xx 前往 yy 的最短距离。各次询问按时间非递减的顺序给出。

输出格式

共输出 QQ 行,依次回答各个询问。对于 (x,y,t)(x,y,t),若 xx 或 yy 到第 tt 天仍未恢复,或当天无法从 xx 沿已恢复村庄到达 yy,输出 −1-1。其余情况输出满足条件的最短路径长度。

4 5
1 2 3 4
0 2 1
2 3 1
3 1 2
2 1 4
0 3 5
4
2 0 2
0 1 2
0 1 3
0 1 4
-1
-1
5
4

说明/提示

原题的分档数据范围如下。

数据比例 条件
30% N≤50N\le50
所有 ti=0t_i=0。其中占全部数据 20%20\% 的测试同时满足 N>50N>50
50% Q≤100Q\le100
100% 1≤N≤200, 0≤M≤N(N−1)/2, 1≤Q≤500001\le N\le200,\ 0\le M\le N(N-1)/2,\ 1\le Q\le50000;输入整数均不超过 10510^5