Module: ハッシュ化


Problem

8 /8


バンカー

Theory Click to read/hide

根付いたツリーを効率的にハッシュする方法もいくつかあります。
これらの方法の 1 つは次のように整理されます。
深さのトラバースの順序で頂点を再帰的に処理します。単一の頂点のハッシュが p に等しいと仮定します。子を持つ頂点の場合、最初にそれらのアルゴリズムを実行し、次に子を通じて現在のサブツリーのハッシュを計算します。これを行うには、子のサブツリーのハッシュを一連の数値とみなして、このシーケンスからハッシュを計算します。これは現在のサブツリーのハッシュになります。
子の順序が重要でない場合は、ハッシュを計算する前に、子のサブツリーからハッシュのシーケンスを並べ替え、並べ替えられたシーケンスからハッシュを計算します。

このようにして、ツリーの同型性をチェックできます。子のハッシュを順序なしでカウントするだけです (つまり、子のハッシュをソートするたびに)。そして、ルートのハッシュが一致する場合、ツリーは同型であり、一致しない場合は一致しません。

根のない木の場合、すべてが同様の方法で起こりますが、重心を根と見なす必要があります。または、重心が 2 つある場合は、ハッシュのペアを検討します。

Problem

Petya と Vasya は熱狂的にスパイを演じます。今日、彼らはどこに行くかを計画しています 
彼らの秘密の掩蔽壕と本部を見つけました。 

これまでのところ、Petya と Vasya は、秘密のために 1 から n までの番号が付けられたちょうど n 個のバンカーが必要であると判断しました。 
それらのいくつかは双方向トンネルで接続され、信頼性と機密性のために、トンネルはどのバンカーからでも一方通行にアクセスできるようになります。
Petya と Vasya は、どのバンカーをトンネルで接続するかを決定しましたが、どちらを本部にするかは選択できません。 
少年たちはそれを選び、残りの掩蔽壕を自分たちで分けて、同じ数の掩蔽壕を取得したいと考えています. 正確に 2 つのトンネルが本部につながっています. 1 つは Vasya の掩蔽壕から、もう 1 つは Petya の掩蔽壕からです. 
                                                                                   
疲れたペチャは彼の家に行き、朝、ヴァシャは掩蔽壕が点でマークされ、トンネルがセグメントでマークされた計画を彼に見せました. 
また、ヴァーシャは、彼が描いた計画が本部に対応する点を通る直線に対して対称になるように本部を選択した.
 
Petya はすぐに Vasya が間違いを犯し、掩蔽壕の半分を描画しなかったことを示しましたが、本部を選択してそのような対称的な計画を描くことができるかどうか疑問に思いました。

入力:
入力ファイルの最初の行には、単一の整数 n (1 <= n <= 105) - ビンの数が含まれます。 
次の n - 1 行には、2 つの整数 ui と vi (1 <= ui, vi <= n, ui ≠ vi) - i 番目のトンネルで接続された掩蔽壕の数. 
2 つの掩蔽壕の間には 1 つのパスしかないことが保証されています。

出力:
出力ファイルに、本社を選択してそのような計画を描くことができる場合は「YES」、または「NO」を印刷します。それが不可能なら。

例:
  <本体>
入力 出力
2
1 2
いいえ
3
1 2
2 3
はい