AcWing 1144. 连接格点 题解(最小生成树 | 克鲁斯卡尔算法)

该博客详细解析了AcWing 1144题——连接格点的解题思路。通过将二维坐标映射为一维,构建图并巧妙地处理纵向边,然后运用克鲁斯卡尔算法求解最小生成树。此方法确保已有的边在构建过程中不影响最小生成树的权重。
摘要由CSDN通过智能技术生成

AcWing 1144. 连接格点
发现点多之后就用二维坐标映射到一维,之后就是将所有边都考虑,建图(注意建图get_edge中的先遍历纵向边的小技巧,只能说妙啊妙),之后就是跑克鲁斯卡尔算法,不用担心已经给出的边,因为会提前把他们处理进连通块,这样建最小生成树的时候就不会被这部分权重影响

#include<bits/stdc++.h>

using namespace std;

const int N = 1010, M = N * N;

struct Edge{
   
	int a, b, w;
}e[M * 2];  //无向边,所以要注意开的空间数量 

int n, m;
int ids[N][N];
int p[M];
int res;
int k;

int find(int x){
   
	if(x != p[x]) p[x] = find(p[x]);
	return p[x];
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值