In the event of technical difficulties with Szkopuł, please contact us via email at szkopul@fri.edu.pl.
If you would like to talk about tasks, solutions or technical problems, please visit our Discord servers. They are moderated by the community, but members of the support team are also active there.
The Byteotian Cave is composed of chambers and
corridors that
connect them. For every pair of chambers there is unique way to move
from one of them to another without leaving the cave.
Dynamite charges are set up in certain chambers.
A fuse is laid along every corridor.
In every chamber the fuses from the adjacent corridors meet at one point,
and are further connected to the dynamite charge if there is one in the
chamber. It takes exactly one unit of time for the fuse between two
neighbouring chambers to burn, and the dynamite charge explodes in the
instant that fire reaches the chamber it is inside.
We would like to light the fuses in some chambers (at the joints of
fuses) in such a way that all the dynamite charges explode in the shortest
time possible since the fuses are lit. Write a program that will determine
the minimum such time possible.
The first line of the standard input holds two integers and
(
), separated by a single space, that
denote, respectively, the number of chambers in the cave and the number
of chambers in which fire can be set to the fuses.
The chambers are numbered from 1 to
.
The next line contains
integers
(
), separated by single spaces.
If
, then there is dynamite in the
-th chamber, and if
, there is none.
The following
lines specify the corridors of the cave.
Each of them holds two integers
(
),
separated by a single space, denoting that there is a corridor
connecting the chambers
and
.
Every corridor appears exactly once in the description.
You may assume that in tests worth 10% of the points it holds
additionally that , while in tests worth 40% of the points
it holds that
.
The first and only line of the standard output should hold a single integer, equal to the minimum time it takes from lighting the fuses to the explosion of all the charges.
For the input data:
7 2 1 0 1 1 0 1 1 1 3 2 3 3 4 4 5 5 6 5 7
the correct result is:
1
Explanation of the example: We light the fuses in chambers 3 and 5. The charge in chamber 3 explodes at time zero, and the charges in chambers 1, 4, 6 and 7 explode after a single time unit.
Task author: Jacek Tomasiewicz.