atcoder#AGC034E. [AGC034E] Complete Compress
[AGC034E] Complete Compress
配点 : 点
問題文
頂点に番号 がついた 頂点の木が与えられます。 番目の辺は頂点 と頂点 を結んでいます。
また長さ の 0
, 1
からなる文字列 が与えられ、 の 文字目は頂点 に置いてあるコマの個数を表しています。
すぬけ君は、以下の操作を好きなだけ行います。
- 距離が 以上離れたコマ 個を選び、お互いに ずつ近づける。 正確に述べると、コマの置かれた頂点 を選び、 間の最短パスを考える。ここでパスの辺数が 以上となるように選ぶことにする。パスにおいて に隣り合う頂点にコマを 個 から動かし、 に隣り合う頂点にコマを 個 から動かす。
すぬけ君はこれを繰り返し、すべてのコマを同じ頂点に集めたいです。このようなことは可能でしょうか? 可能な場合、それを達成するのに必要な操作の最小回数も求めてください。
制約
- は
0
,1
からなり、また少なくとも 文字は1
を含む - 辺 $(a_1, b_1), (a_2, b_2), ..., (a_{N - 1}, b_{N - 1})$ は木をなす
入力
入力は以下の形式で標準入力から与えられる。
出力
コマを同じ頂点に集められない場合 -1
、集められる場合は操作の最小回数を出力せよ。
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