|
|
|
@ -5,7 +5,7 @@ typedef pair<int, int> PII;
|
|
|
|
|
#define x first
|
|
|
|
|
#define y second
|
|
|
|
|
|
|
|
|
|
const int N = 510, M = N * N;
|
|
|
|
|
const int N = 510, M = N * N / 2; // C(n,2)
|
|
|
|
|
int n, k;
|
|
|
|
|
|
|
|
|
|
struct Edge {
|
|
|
|
@ -40,7 +40,9 @@ int main() {
|
|
|
|
|
// 枚举所有点与点之间的边
|
|
|
|
|
for (int i = 0; i < n; i++)
|
|
|
|
|
for (int j = i + 1; j < n; j++)
|
|
|
|
|
edge[el++] = {i, j, get_dist(q[i], q[j])}; // 记录单向边即可
|
|
|
|
|
edge[el++] = {i, j, get_dist(q[i], q[j])}; // 因为是一个无向图,所以我们取一半就可以了
|
|
|
|
|
// 之所以取一半,其实也是为了配合后面的 cnt--,因为cnt--的现实含义是两个点连接上了,家族数量减少了1个
|
|
|
|
|
// 如果这里不是取一半,那么后面就需要cnt-=2, 哈哈,就问你是不是懵~
|
|
|
|
|
|
|
|
|
|
// 边权由小到大排序
|
|
|
|
|
sort(edge, edge + el);
|
|
|
|
|