#arc0302. [arc030_2]ツリーグラフ
[arc030_2]ツリーグラフ
问题描述
给定一个由n个顶点组成的树图。该图恰好有n-1条边,且保证是连通的。具有这种性质的图一定不包含环路。每个顶点编号为从1到n的不同整数,边的代价均为1。
在某些顶点上有高至多为1的宝石。只有当你位于一个有宝石的顶点上时,才能够收集到该宝石。你想要找到一条从某个顶点x出发,收集所有宝石并再次返回顶点x的最短路径。请计算这样的路径的长度。路径的长度定义为路径上所有边代价的总和。
输入
输入通过标准输入给出,具体格式如下:
…
:
- 第1行为两个整数和起始顶点,分别表示树图的顶点数量和起始顶点编号。
- 第2行为个整数,表示顶点上存在的宝石数量,以空格分隔。
- 第3行到第行为树图的条边连接的两个顶点的编号和。
- 输入保证没有自环和重复边,并且树图是连通的。
输出
输出最短路径的长度,只有一行。不要忘记换行符。
示例1
5 1
1 0 1 0 1
1 2
2 3
2 4
1 5
输出示例1
6
下图显示了输入的图以及最短路径的一个例子。因为,所以从顶点1出发。
示例2
3 2
0 1 0
1 2
2 3
输出示例2
0
因为只有出发点上有宝石,所以不移动就是最短路径。