各クエリは、2つのパラメータUとLを有している、私はこれを最適に解決する方法は?
sum(score[i]) for all i where lca(i,u)=u and dist(u,i)=L
を見つける必要が私は各クエリを解決することができ、私は各頂点がスコアを有するn個の頂点のツリーn<=10^5
[I]を有し、qはq<=10^5
を照会bfsを使用している時間はO(n)
ですが、効率的ではありません。これをどのように最適化できますか?私はこれに多くの時間を費やしましたが、すべてのクエリのためにnlogn
時間にそれを解決する方法を見つけることができませんでした。
何か助けていただければ幸いです。ありがとう
どのように休暇時間を計算しますか? – prem
@PremSingh頂点がスタックをポップしようとしているとき(つまり、dfs関数の最後で)、leave_time [v] = timer ++ – kraskevich
ありがとうございます。 – prem