#arc0302. [arc030_2]ツリーグラフ

[arc030_2]ツリーグラフ

问题描述

给定一个由n个顶点组成的树图。该图恰好有n-1条边,且保证是连通的。具有这种性质的图一定不包含环路。每个顶点编号为从1到n的不同整数,边的代价均为1。

在某些顶点上有高至多为1的宝石。只有当你位于一个有宝石的顶点上时,才能够收集到该宝石。你想要找到一条从某个顶点x出发,收集所有宝石并再次返回顶点x的最短路径。请计算这样的路径的长度。路径的长度定义为路径上所有边代价的总和。


输入

输入通过标准输入给出,具体格式如下:

nn xx
h1h_1 h2h_2hnh_n
a1a_1 b1b_1
a2a_2 b2b_2
:
an1a_{n-1} bn1b_{n-1}

  • 第1行为两个整数n(1n100)n(1≦n≦100)和起始顶点x(1xn)x(1≦x≦n),分别表示树图的顶点数量和起始顶点编号。
  • 第2行为nn个整数hi(0hi1)h_i(0≦h_i≦1),表示顶点ii上存在的宝石数量,以空格分隔。
  • 第3行到第n1n-1行为树图的n1n-1条边连接的两个顶点的编号aia_ibi(1ai,bin)b_i(1≦a_i,b_i≦n)
  • 输入保证没有自环和重复边,并且树图是连通的。

输出

输出最短路径的长度,只有一行。不要忘记换行符。


示例1


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

输出示例1


6

下图显示了输入的图以及最短路径的一个例子。因为x=1x=1,所以从顶点1出发。


示例2


3 2
0 1 0
1 2
2 3

输出示例2


0

因为只有出发点上有宝石,所以不移动就是最短路径。