30003 - 曼哈顿最小生成树
时间限制 : 1 秒
内存限制 : 128 MB
给定平面上的 n 个点 (x_1,y_1),(x_2,y_2),\ldots,(x_n,y_n)。
考虑一个有 n 个结点的完全图,对于 1\le u,v\le n(u\ne v),结点 u,v 之间有一条权值为 |x_u-x_v|+|y_u-y_v| 的边。
请求出该图的最小生成树。
输入
第一行输入一个整数 n 表示点的个数。
接下来 n 行,第 i 行输入两个整数 (x_i,y_i),表示第 i 个点的坐标。
输出
第一行包含一个整数 x 表示最小生成树的边权之和。
接下来 (n-1) 行,第 i 行包含两个整数 (u_i,v_i),表示最小生成树中的一条边。
样例
输入
6 3 8 4 9 2 1 10 5 4 9 2 0
输出
21 5 2 6 3 1 2 3 1 4 1
提示
对于 20\% 的数据,1\le n\le 1000。
对于 100\% 的数据,1\le n\le 2\times 10^5,0\le x_i,y_i\le 10^9。