公式
G - Sum of Tree Distance 解説
by
G - Sum of Tree Distance 解説
by
nok0
重心分解を用いることで、根を通るパスに対する答えが求められれば良いです。
パスの端点が根かどうかで場合分けします。根のときは、愚直に BFS などを行えばよいです。
そうでない場合、各頂点 \(v\) について、頂点 \(v\) と根を結ぶパスが何回答えに寄与するかを数えましょう。根の子が \(c_1,\ldots,c_k\) として、頂点 \(v\) は部分木 \(c_i\) に含まれるとします。
このとき、頂点 \(v\) と根を結ぶパスが答えに寄与する回数は、
(今見ている木に含まれる \(A_v = A_u\) を満たす頂点 \(u\) の個数 - 部分木 \(c_i\) に含まれる \(A_v = A_u\) を満たす頂点 \(u\) の個数)
として求まります。この計算に必要な値は全て dfs により求めることが出来ます。よってこの問題を解くことが出来ました。
投稿日時:
最終更新:
