E - Tree Distance 解説
by
harurun4635
別解
結論から言えば、「辺重みが \(A_{i,j}\) である完全グラフの最小全域木」を \(1\) つ選び、それが条件を満たすかどうか判定すればよいです。
証明
いま選んだ最小全域木を \(T\) とします。答えであるような木 \(U\) が別に存在するとします。
この木 \(U\) に、辺 \((u, v)\) を追加し、辺 \((x, y)\) を削除すれば今より重みが「大きくない」全域木が作られるような、(異なる)辺 \((u, v)\)、辺 \((x, y)\) が存在するはずです。このとき \(A_{u,v} \le A_{x, y}\) です。
また、木 \(U\) に辺 \((u, v)\) を追加したグラフにおいて、サイクルはただ \(1\) つ存在し、そのサイクル上に \(u, v, x, y\) が(これらの頂点には重複があるかもしれませんが)すべて乗っているはずです。木上のパスは一意に定まることに注意すれば、木 \(U\) 上の \(u, v\) パスは、辺 \((x, y)\) を真に含むはずなので \(A_{u, v} \gt A_{x, y}\) です。
よって、矛盾します。
つまり \(T\) 以外の木が答えとなることはないため、この木についてのみ判定すればよいです。
最小全域木は \(O(N^2)\) のアルゴリズムはもちろん、\(O(N^2 \log N)\) のアルゴリズムであっても多くの言語で AC がとれると思われます。
(もし TLE となるのであれば、バケットソートを用いて \(O(N^2+ \max A)\) とすることも検討してみてください)
判定は公式解説同様に行えばよいです。
投稿日時:
最終更新:
