因为是二维平面图,所以点很多,如果全部点都连边,将有N*(N+1)/2条边,数组肯定存不下,所以要想办法减少边数。题目要求的是最小生成树的权值,又是曼哈顿距离,可以发现,对于平面上的某个点,以该点为原点建立直角坐标系,则我们只需要连接四个象限中每个象限离它最近的那个点即可,所以边的数量减少到4*N。
对于每个点,用树状数组维护每个象限离它的最近的那个点的权值就好了
#include <map>
#include <set>
#include <cmath>
#include <ctime>
#include <stack>
#include <queue>
#include <cstdio>
#include <memory>
#include <cctype>
#include <bitset>
#include <string>
#include <vector>
#include <climits>
#include <cstring>
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <functional>
//#define FIN freopen("input.txt","r",stdin);
//#define FOUT freopen("output.txt","w+",stdout);
using namespace std;
typedef long long ll;
const int INF = 0x3f3f3f3f;
const in