atcoder#AGC034E. [AGC034E] Complete Compress

[AGC034E] Complete Compress

题目描述

頂点に番号 1, 2, ..., N 1,\ 2,\ ...,\ N がついた N N 頂点の木が与えられます。i i 番目の辺は頂点 ai a_i と頂点 bi b_i を結んでいます。 また長さ N N 0, 1 からなる文字列 S S が与えられ、S S i i 文字目は頂点 i i に置いてあるコマの個数を表しています。

すぬけ君は、以下の操作を好きなだけ行います。

  • 距離が 2 2 以上離れたコマ 2 2 個を選び、お互いに 1 1 ずつ近づける。 正確に述べると、コマの置かれた頂点 u, v u,\ v を選び、u, v u,\ v 間の最短パスを考える。ここでパスの辺数が 2 2 以上となるように選ぶことにする。パスにおいて u u に隣り合う頂点にコマを 1 1 u u から動かし、v v に隣り合う頂点にコマを 1 1 v v から動かす。

すぬけ君はこれを繰り返し、すべてのコマを同じ頂点に集めたいです。このようなことは可能でしょうか? 可能な場合、それを達成するのに必要な操作の最小回数も求めてください。

输入格式

入力は以下の形式で標準入力から与えられる。

N N S S a1 a_1 b1 b_1 a2 a_2 b2 b_2 : : aN  1 a_{N\ -\ 1} bN  1 b_{N\ -\ 1}

输出格式

コマを同じ頂点に集められない場合 -1、集められる場合は操作の最小回数を出力せよ。

题目大意

给你一颗 nn 个节点的树,并用二进制串告诉你哪些节点上有棋子(恰好一颗)。

可以进行若干次操作,每次操作可以将两颗距离至少为 22 的棋子向中间移动一步。

问能否通过若干次操作使得所有的棋子都在一个点上,如果能,输出最小操作次数,如果不能,输出 1-1

数据范围:2n20002 \leq n\leq 2000

7
0010101
1 2
2 3
1 4
4 5
1 6
6 7
3
7
0010110
1 2
2 3
1 4
4 5
1 6
6 7
-1
2
01
1 2
0

提示

制約

  • 2  N  2000 2\ \leq\ N\ \leq\ 2000
  • S = N |S|\ =\ N
  • S S 0, 1からなり、また少なくとも 1 1 文字は 1 を含む
  • 1  ai, bi  N(ai  bi) 1\ \leq\ a_i,\ b_i\ \leq\ N(a_i\ \neq\ b_i)
  • 辺 $ (a_1,\ b_1),\ (a_2,\ b_2),\ ...,\ (a_{N\ -\ 1},\ b_{N\ -\ 1}) $ は木をなす

Sample Explanation 1

- 頂点 3, 5 3,\ 5 のコマを選ぶ - 頂点 2, 7 2,\ 7 のコマを選ぶ - 頂点 4, 6 4,\ 6 のコマを選ぶ の 3 3 回の操作ですべてのコマを頂点 1 1 に集めることができます。