atcoder#AGC010C. [AGC010C] Cleaning

[AGC010C] Cleaning

题目描述

N N 頂点からなる木があり、頂点には 1 1 から N N の番号がついています。 また、N1 N-1 本の辺の内、i i 番目の辺は頂点 ai a_i と頂点 bi b_i を結んでいます。

今、各頂点 i i には Ai A_i 個の石が置いてあります。 以下の操作を繰り返して、全ての石を取り除くことができるか判定してください。

  • 相異なる 2 2 つの葉を一組選ぶ。そして、その 2 2 頂点間のパス上にある頂点全てからちょうど 1 1 つ石を取り除く。
    ただし、葉とは木の頂点で次数が 1 1 の頂点を指し、選んだ葉自体もパス上の頂点として考える。

石が置かれていない頂点がパス上にあるときは、その操作を行えないことに注意してください。

输入格式

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

N N A1 A_1 A2 A_2 AN A_N a1 a_1 b1 b_1 : aN1 a_{N-1} bN1 b_{N-1}

输出格式

全ての石を取り除くことができるなら YES を、そうでないなら NO を出力せよ。

题目大意

一棵树,第ii个节点上有aia_i个石头,每次选择两个叶子节点(度数为1的节点),将路径上经过的(包括起点终点)所有节点上都取走一个石头,如果路径上有一个点上没石头这个操作就不能进行,问能不能取完所有石头。

5
1 2 1 1 2
2 4
5 2
3 2
1 3
YES
3
1 2 1
1 2
2 3
NO
6
3 2 2 2 2 2
1 2
2 3
1 4
1 5
4 6
YES

提示

制約

  • 2  N  105 2\ ≦\ N\ ≦\ 10^5
  • 1  ai,bi  N 1\ ≦\ a_i,b_i\ ≦\ N
  • 0  Ai  109 0\ ≦\ A_i\ ≦\ 10^9
  • 与えられるグラフは木である。

Sample Explanation 1

以下のようにすれば、すべての石を取り除くことができます。 - 葉として 4 4 5 5 を選ぶ。このとき、4 4 以外の頂点に石が 1 1 個残る。 - 葉として 1 1 5 5 を選ぶ。このとき、全ての頂点から石がなくなる。