总览:
给出一个 n n n 个点 m m m 条边的无向图,第 i i i 条边有两个权值 a i , b i a_i,b_i ai,bi,求该图的一棵生成树 T T T ,使得 ∑ a i × ∑ b i \sum a_i\times \sum b_i ∑ai×∑bi 最小
对于每一棵生成树,视作一个二维平面上的点, ( ∑ a i , ∑ b i ) (\sum a_i,\sum b_i) (∑ai,∑bi)
使得 ∑ a i × ∑ b i \sum a_i\times \sum b_i ∑ai×∑bi 最小就是让点所在的反比例函数最靠近坐标轴
于是先求出与 x x x 轴和 y y y 轴最近的点
把 a i a_i ai 作为边权,求出的最小生成树就是与 x x x 轴最近的点
把 b i b_i bi 作为边权,求出的最小生成树就是与 y y y 轴最近的点
为了下面讲解的方便,设与 x x x 轴最近的点为 A A A ,与 y y y 轴最近的点为 B B B
然后需要找出在 A B AB AB 左下方,离 A B AB AB 最远的点 C C C
即使得 Δ A B C \Delta ABC ΔABC 的面积最大
S Δ A B C = A B → × A C → = ( x B − x A ) ( y C − y A ) − ( y B − y A ) ( x C − x A ) = − ( y B − y A ) x C + ( x B − x A ) y C − ( x B − x A ) y A + ( y B − y A ) x A S_{\Delta ABC}\\= \overrightarrow {AB}\times \overrightarrow {AC}\\= (x_B-x_A)(y_C-y_A)-(y_B-y_A)(x_C-x_A)\\= -(y_B-y_A)x_C+(x_B-x_A)y_C-(x_B-x_A)y_A+(y_B-y_A)x_A SΔABC=AB×AC=(xB−xA)(yC−yA)−(yB−y