灾后重建

【题目描述】

地震过后,所有的村庄都有一定的损毁,但公路依旧正常。在村庄重建好之前,所有与未重建完成村庄相连的公路均无法通车。

给定村庄数N以及M条公路的长度,村庄从0~N-1编号,公路是双向的,并给定第i个村庄重建完成的时间Ti,可以认为村庄是同时开始重建的并在第Ti天重建完成,且在当天即可通车。若Ti为0,则此村庄一开始就可以通车。

现有Q个询问,对于每个询问,需要输出在第t天,从村庄x到村庄y的最短路径长度为多少,如果无法找到从x村庄到y村庄的路径,或者村庄x或村庄y在第t天仍未重建完成,则输出-1。

【输入描述】

第一行输入两个正整数N、M,表示村庄的数目与公路的数目;

第二行输入N个非负整数T0、T1、······、TN–1,表示每个村庄重建完成的时间(T0 ≤ T1 ≤ ······ ≤ TN–1);

接下来M行,每行输入三个非负整数i、j、w,w为不超过10000的正整数,表示存在一条长度为w、连接村庄i和村庄j的道路(i ≠ j),数据保证对于任意一对村庄只存在一条道路;

第M+3行输入一个正整数Q,表示询问的数目;

接下来Q行,每行输入三个非负整数x、y、t,表示在第t天,询问从村庄x到村庄y的最短路径长度为多少,数据保证t不降。

【输出描述】

输出Q行,对于每一个询问输出一个数,表示答案,否则输出-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 ≤ 50;

对于30%的数据,Ti = 0;

对于50%的数据,Q ≤ 100;

对于100%的数据,N ≤ 200,M ≤ N*(N-1)/2,Q ≤ 50000。

posted @ 2016-10-12 14:40  前前前世。  阅读(198)  评论(0编辑  收藏  举报