問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
(はじめに)
この問題集では、Segment Treeについて扱います。
Segment Treeでは区間クエリに加えて、1点更新も高速に行うことが出来るデータ構造です。
この問題集では、まず、構築、更新、区間クエリの処理の 3 つに分けて構成されています。
その後、Segment Treeを使う区間クエリの問題を解く流れになっています。
まずはじめに、Segment Treeを構築するために、グラフの知識について復習していきます。
以下にPythonコードの載せてあります。このコードを完成させることを目標とします。
class SegTree():
def calc(self, a, b): #区間クエリで行いたい処理
return max(a, b)
def e(self): #単位元
#問題 4 で説明
def __init__(self, n, A):
#完全2分木を構築
#問題 2,3 で実装
def renewal(self, ind, x): #A[ind]をxに更新
#問題 5,6 で実装
def product(self, l, r): #A[l]からA[r]までの計算結果を返す
#問題 7,8,9 で実装

入力は以下のフォーマットで与えられます。
N
a_1 b_1
a_2 b_2
a_3 b_3
...
a_{N-1} b_{N-1}
答えを N 行で出力してください。
i (1 ≦ i ≦ N) 行目では、頂点 i - 1 に隣接している頂点の番号を昇順に出力してください。
すべてのテストケースについて以下の条件を満たします。
6
1 2
1 3
3 4
4 5
3 0
3
2 3
1
0 1 4
3 5
4
2
0 1
1
0