動的 (辺の追加/削除がある) 森のオイラーツアーを Splay Tree で管理することで、部分木内の重みの 取得/変更 クエリに答えることができる。
任意の頂点から開始するオイラーツアーの x 番目を取得もできるが、多分使う場面は少ない。
このライブラリでは独自のオイラーツアー列を定義しているが、実装を変えると一般的なオイラーツアーの x 番目を取得可能。
オイラーツアー全体が欲しいならただのオイラーツアーをすれば良い。
このライブラリの強みは部分木のクエリに答えることができること。
頂点重みと辺重みのどちらを持つかをテンプレートパラメータで指定する。
動的に辺を追加/削除したり、動的に木の根を変更できる。
その上、Link Cut Tree などで、ある頂点の親が特定されているなら、その頂点以下の部分木内の辺もしくは頂点重みに対して、Sum,Min,Max の所得、重みの一律 Affine 変換、一律更新を行うことができる。
コード下部に使用例を付けてあります。