ARC076B题解

题面

题意:给你 \(n\) 个点,每个点的坐标是 \((x_i,y_i)\) ,定义 \((a,b)\)\((c,d)\) 两点间的距离为 \(\operatorname{min}\{|a-c|,|b-d|\}\) ,求这个图的MST。


先考虑横向。设有三个点横坐标为 \(x_1,x_2,x_3(x_1<x_2<x_3)\) ,那么从 \(x_1\) 走到 \(x_3\) 可以走 \(x_1\to x_2\to x_3\) ,也可以 \(x_1 \to x_3\) 。但因为两个路线的长度都是 \(|x_2-x_1|+|x_3-x_2|=|x_3-x_1|\) ,没有区别,所以连边的时候可以只连 \(x_1,x_2\)\(x_2,x_3\) 两条边。
拓展到 \(n\) 个点的情况。只需要把它们按照横坐标排序,每一个点只需要连下一个点即可。纵坐标显然一样。这样,我们就把 \(n^2\) 条边简化成了 \(2\times(n-1)\) 条边。然后在这个图上跑 \(\operatorname{Kruscal}\) 就做完了。

代码

posted @ 2022-03-31 19:48  1358id  阅读(23)  评论(0编辑  收藏  举报