OpenKattis
Problem Set 4

#### Start

2019-10-13 15:59 UTC

## Problem Set 4

#### End

2019-10-28 15:59 UTC
The end is near!
Session is over.
Not yet started.
Session is starting in -134 days 13:15:02

360:00:01

0:00:00

# Problem NTreasure Diving

Legends often tell of great treasures. But you rarely get the chance to actually stumble upon those treasures. Most of them are lost in the sea, or hidden below mountains. But as you learned from one of your biggest idols, treasures do belong into a museum. And now you have the chance to make that happen.

On an expedition you found a large cave network. A native shaman has spoken about incredible values his ancestors have hidden in the caves. He even gave you an ancient map, depicting the cave network and the location of the treasures within. Sadly, the cave network is completely flooded. Since the trip out here takes forever, you decided to do a short dive and scout out the cave network. But on your arrival back at the entrance to the cave network you get the news$\ldots$ a volcano just erupted nearby. It is next to guaranteed that the lava will cover the entries to the cave network and the treasures will be lost forever.

That puts you on the spot. You only have a short time left, and only one lousy tank of air. So it is all on you. You only have time for a single dive. But how could you possible decide which route to take? The cave network is huge, and you should definitely try and rescue as much of the treasures as possible. You think back to your times as a computer scientist at the university$\ldots$ And then it hits you. You still have your laptop with you. You could write a program to help you figure out the best you can do in rescuing the treasures.

You may assume that neither locating or picking up a treasure within a cave nor the traversal of a cave consumes any air.

## Input

Each test set consists of multiple test cases. The file starts with a single number $t$ ($0 < t \le 2000$) on a single line, denoting the number of testcases in the file. Each test case starts with two integers $n$ and $m$ on a single line, where $n$ the number of caves and $m$ the number of the connecting tunnels in the network ($1 \leq n \leq 10\, 000$; $0 \leq m \leq 50\, 000$). This line is followed by $m$ lines, giving a description of the tunnels of the cave as three integers $a$ $b$ and $l$ with $a$, $b$ denoting caves and $l$ giving the amount of air necessary for diving through the tunnel ($0 \le a, b < n; 0 \le l \le 500$). After the tunnels follows an integer $i$ on a single line, giving the number of idols in the cave system ($0 \leq i \leq 8$). This line is followed by a single line containing $i$ integers $p_1, \ldots , p_ i$ giving the caves withing the network conaining an idol ($0 \le p_1,\ldots ,p_ i < n$). The input is concluded by a single number, giving the liters of air $a$ you have available ($0 \le a \le 1\, 000\, 000$). You will always start (and end) at the node with the label $0$.

## Output

For each test case print a number $X$ on a single line, where X is replaced by the maximal number of idols the diver can recover.

Sample Input 1 Sample Output 1
3
5 3
0 1 10
0 2 20
0 3 30
4
1 2 3 4
30
5 3
0 1 10
0 2 20
0 3 30
4
1 2 3 4
60
5 3
0 1 10
0 2 20
0 3 30
4
1 2 3 4
10000

1
2
3