MIPS | Malaysian Informatics And Programming Society

Reachability Queries

Statement

The Magical Charming Conurbation (MCC) is an area consisting of NN cities numbered 1,2,,N1, 2, \ldots, N. There are MM two-way roads numbered 1,2,,M1, 2, \ldots, M. Each road connects two different cities and has a length. SS of the roads are damaged.

Initially, Evirir the dragon is in city 11. If Evirir is in city xx and there is a road between cities xx and yy with length ww, then it can go to city yy in ww minutes. Roads can be travelled in both ways. This is the only way Evirir can go to other cities.

As a divine dragon, Evirir senses that there will be an apocalypse KK minutes from now, which will break all damaged roads. This means:

A city xx is reachable if Evirir can reach city xx by travelling on roads while being safe from the apocalypse. Note that city 11 is always reachable. Also, Evirir can travel as long as it wants, even after the apocalypse.

Now, Evirir isn’t sure about the value of KK. It has QQ possible values of KK (each value is a query), and for each of them, it wants to know: how many cities are reachable?

Input Format

The first line contains two space-separated integers, NN and MM.

The ii-th of the next MM lines contains three space-separated integers xx, yy, and ww, meaning road ii connects city xx and yy and has length ww. For every pair of cities, there is at most one road connecting them.

The next line contains an integer SS, the number of damaged roads.

The next line contains SS space-separated integers d1,d2,,dSd_1, d_2, \ldots, d_S, meaning roads d1,d2,,dSd_1, d_2, \ldots, d_S are damaged. This will be an empty line if S=0S = 0.

The next line contains the number of queries QQ.

The next QQ lines each contains a single integer KK.

Output Format

Output QQ lines, the ii-th of which contains an integer, the answer to the ii-th query in the input.

Constraints

For all tasks:

Sample Input

5 6
1 2 7
2 3 10
4 3 8
4 2 5
1 5 18
3 5 20
4
1 3 4 6
3
6
11
12

Sample Output

2
4
5

Sample Explanation

The damaged roads are road 11 (between cities 1 and 2), road 33 (between cities 4 and 3), road 44 (between cities 4 and 2), and road 66 (between cities 3 and cities 5).

For the first query, the apocalypse is K=6K = 6 minutes from now. Evirir cannot reach any city other than city 1 before the apocalypse, as no road from city 11 has a length of 66 or less. After the apocalypse, Evirir can reach 22 cities: cities 11 and 55 as shown in Figure 1.

For the second query, the apocalypse is K=11K = 11 minutes from now. Evirir can reach all the cities except city 4. Evirir cannot reach city 4 before the apocalypse happens (i.e. there is no sequence of connecting roads that will reach city 4 by K=11K = 11 minutes: the fastest way to reach city 4 is through the road from city 1 to city 2, then through the road from city 2 to city 4, which in total takes 12 minutes). After the apocalypse, all roads connecting city 4 are destroyed. Hence, there is no way Evirir can reach city 4. Evirir can reach all other cities as described in Figure 2.

For the third query, the apocalypse is K=12K = 12 minutes from now. Evirir can reach all the cities. Now, Evirir can reach city 4 before the apocalypse happens by travelling from city 1 to city 2, then to city 4. Evirir can still reach all other cities as described in Figure 2 too.

In the figures below, a circle numbered xx represents city xx, and a line segment labelled ww between two circles represents the road connecting the two cities with length ww.

Showing cities reachable by the dragon for query 1 with \(K=6\)
Figure 1: Showing cities reachable by the dragon for query 1 with K=6K=6.

Showing cities reachable by the dragon for query 2 with \(K=11\).
Figure 2: Showing cities reachable by the dragon for query 2 with K=11K=11.

Pertanyaan Kebolehcapaian (Reachability Queries)

Pernyataan

Magical Charming Conurbation (MCC) ialah sebuah kawasan yang terdiri daripada NN bandar bernombor 1,2,,N1, 2, \ldots, N. Terdapat MM jalan dua hala bernombor 1,2,,M1, 2, \ldots, M. Setiap jalan menghubungkan dua bandar yang berbeza dan mempunyai panjang. Sebanyak SS daripada jalan-jalan ini adalah rosak.

Pada mulanya, Evirir si naga berada di bandar 11. Jika Evirir berada di bandar xx dan terdapat jalan antara bandar xx dan yy dengan panjang ww, maka Evirir boleh pergi ke bandar y dalam masa ww minit. Jalan boleh dilalui dua hala. Ini ialah satu-satunya cara Evirir boleh bergerak ke bandar lain.

Sebagai naga sakti, Evirir merasakan bahawa malapetaka akan berlaku dalam KK minit dari sekarang, yang akan memutuskan semua jalan yang rosak. Ini bermaksud:

Sebuah bandar xx dikatakan boleh dicapai (reachable) jika Evirir boleh sampai ke bandar xx dengan melalui jalan-jalan sambil kekal selamat daripada malapetaka. Perhatikan bahawa bandar 1 sentiasa boleh dicapai. Selain itu, Evirir boleh terus bermusafir selama mana yang dikehendaki, walaupun selepas malapetaka.

Kini, Evirir tidak pasti tentang nilai KK. Evirir mempunyai QQ kemungkinan nilai KK (setiap satunya dipanggil pertanyaan), dan bagi setiap nilai tersebut Evirir ingin tahu: berapa banyak bandar yang boleh dicapai?

Format Input

Baris pertama mengandungi dua integer yang dipisahkan oleh ruang, NN dan MM.

Baris ke-ii daripada MM baris seterusnya mengandungi tiga integer dipisahkan oleh ruang, xx, yy, dan ww, yang bermaksud jalan ke-ii menghubungkan bandar xx dan yy dengan panjang ww. Bagi setiap pasangan bandar, paling banyak satu jalan menghubungkan mereka.

Baris seterusnya mengandungi integer SS, bilangan jalan yang rosak.

Baris seterusnya mengandungi SS integer dipisahkan oleh ruang, d1,d2,,dSd_1, d_2, \ldots, d_S, yang bermaksud jalan bernombor d1,d2,,dSd_1, d_2, \ldots, d_S adalah rosak. Baris ini kosong jika S=0S = 0.

Baris seterusnya mengandungi bilangan pertanyaan QQ.

Setiap satu daripada QQ baris berikutnya mengandungi satu integer KK.

Format Output

Keluarkan Q baris; baris ke-ii mengandungi satu integer, iaitu jawapan bagi pertanyaan ke-ii dalam input.

Kekangan

Untuk semua tugasan:

Contoh Input

5 6
1 2 7
2 3 10
4 3 8
4 2 5
1 5 18
3 5 20
4
1 3 4 6
3
6
11
12

Contoh Output

2
4
5

Penjelasan Contoh

Jalan yang rosak ialah jalan 11 (antara bandar 1 dan 2), jalan 33 (antara bandar 4 dan 3), jalan 44 (antara bandar 4 dan 2) dan jalan 66 (antara bandar 3 dan 5).

Bagi pertanyaan pertama, malapetaka berlaku pada K=6K = 6 minit dari sekarang. Evirir tidak boleh mencapai mana-mana bandar selain bandar 1 sebelum malapetaka, kerana tiada jalan dari bandar 11 yang panjangnya 66 atau kurang. Selepas malapetaka, Evirir boleh mencapai 22 bandar: bandar 11 dan 55 (lihat Rajah 1).

Bagi pertanyaan kedua, K=11K = 11 minit. Evirir boleh mencapai semua bandar kecuali bandar 4. Evirir tidak sempat ke bandar 4 sebelum malapetaka berlaku (tiada rangkaian jalan yang sampai ke bandar 4 dalam masa K=11K = 11 minit; cara terpantas untuk sampai ke bandar 4 ialah melalui jalan daripada bandar 1 ke bandar 2, kemudian melalui jalan antara bandar 2 dan bandar 4, iaitu jumlahnya ialah 12 minit). Selepas malapetaka, semua jalan yang menghubungkan bandar 4 telah musnah. Maka, tiada cara untuk sampai ke bandar 4. Evirir boleh mencapai semua bandar lain seperti dalam Rajah 2.

Bagi pertanyaan ketiga, malapetaka ialah K=12K = 12 minit dari sekarang. Evirir boleh mencapai semua bandar. Kini Evirir sempat ke bandar 4 sebelum malapetaka dengan melalui jalan daripada bandar 1 ke bandar 2, kemudian ke bandar 4. Bandar-bandar lain masih boleh dicapai seperti dalam Rajah 2.

Dalam rajah, bulatan bernombor xx mewakili bandar xx, dan segmen garisan berlabel ww antara dua bulatan mewakili jalan antara dua bandar dengan panjang ww.

Menunjukkan bandar-bandar yang boleh dicapai oleh naga itu untuk pertanyaan 1 dengan \(K=6\).
Rajah 1: Menunjukkan bandar-bandar yang boleh dicapai oleh naga itu untuk pertanyaan 1 dengan K=6K=6.

Menunjukkan bandar-bandar yang boleh dicapai oleh naga tersebut untuk pertanyaan 2 dengan \(K=11\).
Rajah 2: Menunjukkan bandar-bandar yang boleh dicapai oleh naga tersebut untuk pertanyaan 2 dengan K=11K=11.

可达性查询

题目描述

Magical Charming Conurbation (MCC) 是一个地区,包含了 NN 座编号为 1,2,,N1, 2, \ldots, N 的城市。除此之外,也有 MM 条双向路,编号为 1,2,,M1, 2, \ldots, M。 每条路都有一个长度且连接了两座不一样的城市。其中 SS 条路是损坏的。

起初,Evirir 龙在城市 11。如果 Evirir 在城市 xx 且有一条长度为 ww 的路连接城市 xxyy,那么它可以用 ww 分钟前往城市 yy。这条路是双向的。这是 Evirir 去往其他城市的唯一方法。

身为一条神圣的龙,Evirir 可以感知到 KK 分钟后将会有一场末日灾难。这个灾难会完全破坏所有损坏的路。也就是说:

一座城市 xx可达的如果 Evirir 可以通过路安全地抵达城市 xx。城市 11 是可达的。另外,Evirir 可以随意走动即使是在灾难之后。

其实 Evirir 不是非常确定 KK 的值。它有 QQ 个可能的 KK(每一个值被称为一个查询)。对于每一个值,它想知道有多少个城市是可达的。

输入格式

第一行包含两个整数 - NNMM

接下来的 MM 行中,第 ii 行包含三个用空格分隔的整数 xxyyww,表示第 ii 条道路连接城市 xx 和城市 yy,长度为 ww。任意一对城市之间最多只有一条道路相连。

接下来一行包含一个整数 SS,表示受损道路的数量。

下一行包含 SS 个用空格分隔的整数 d1,d2,,dSd_1, d_2, \ldots, d_S,表示编号为 d1,d2,,dSd_1, d_2, \ldots, d_S 的道路受损。若 S=0S = 0,则这一行为空行。

再接下来一行包含一个整数 QQ,表示查询的数量。

接下来的 QQ 行中,每一行包含一个整数 KK

输出格式

输出 QQ 行,第 ii 行包含一个整数,对于第 ii 个查询的答案。

约束

对于每项任务:

样例输入

5 6
1 2 7
2 3 10
4 3 8
4 2 5
1 5 18
3 5 20
4
1 3 4 6
3
6
11
12

样例输出

2
4
5

样例解释

损坏的路是 第11个路(连接城市1和2), 第33个路(连接城市4和3),第44个路(连接城市4和2)和第66个路(连接城市3和5)。

对于第一个查询,灾难在 K=6K = 6 分钟发生。灾难发生前,Evirir 无法抵达除了城市1之外的任意城市因为没有一条连接城市 11 且长度少于等于 66。灾难发生后,Evirir 可以抵达两座城市:城市 1155 如图一所示。

对于第二个查询,灾难在 K=11K = 11 分钟发生。Evirir 可以抵达除了城市4之外的所有城市。灾难发生前,Evirir 无法抵达城市4(即不存在一条在 K=11K=11 分钟内到达城市 4 的连通道路序列:到达城市 4 的最快路径是先经过城市 1 到城市 2 的道路,然后再经过城市 2 到城市 4 的道路,总共需要 12 分钟。) 灾难发生后,所有与城市 4 连接的路都被摧毁了。所以,不管怎样 Evirir 都无法抵达城市 4。Evirir 可以抵达其他城市如图二所示。

对于第三个查询,灾难在 K=12K = 12 分钟发生。Evirir 可以抵达所有城市。现在,Evirir 可以在灾难发生前从城市 1 到 城市 2,然后再到城市 4。Evirir 也可以到达其他的城市如图二所示。

在下图中,编号为 xx 的圆表示城市 xx,而连接两个圆并标有 ww 的线段表示这两座城市之间长度为 ww 的道路。

展示在查询 1 (即 \(K = 6\))的情况下可以到达的城市
图一:展示在查询 1 (即 K=6K = 6)的情况下可以到达的城市。

展示在查询 2 (即 \(K = 11\))的情况下可以到达的城市
图二:展示在查询 2 (即 K=11K = 11)的情况下可以到达的城市。