社区讨论

90PTS QZ!!!

P5429 [USACO19OPEN] Fence Planning S参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lo17bkl0
此快照首次捕获于
2023/10/22 16:23
2 年前
此快照最后确认于
2023/11/02 16:01
2 年前
查看原帖
CPP
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
#define int LL
struct Termite_OverMind{
	int min_y;
	int max_y;
	int min_x;
	int max_x;
}a[int(1e5+5)];
int f[int(1e5+5)];
int n,m;
int search(int x){
	if(f[x]==x)return x;
	return f[x]=search(f[x]);
}
signed main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		int x,y;
		cin>>x>>y;
		f[i]=i;
		a[i].min_x=x;
		a[i].max_x=x;
		a[i].min_y=y;
		a[i].max_y=y; 
	}
	for(int i=1;i<=m;i++){
		int A,B;
		cin>>A>>B;
		f[search(A)]=search(B);
		swap(A,B);
		a[A].min_x=min(a[A].min_x,a[B].min_x);
		a[A].max_x=max(a[A].max_x,a[B].max_x);
		a[A].min_y=min(a[A].min_y,a[B].min_y);
		a[A].max_y=max(a[A].max_y,a[B].max_y);
	}
	LL ans=-1,cnt;
	for(int i=1;i<=n;i++){
		if(f[i]==i){
			int xxx=a[i].max_x-a[i].min_x;
			int yyy=a[i].max_y-a[i].min_y;
			cnt=LL(LL(xxx)+LL(yyy));
			if(ans==-1)ans=cnt;
			else ans=min(ans,cnt);
		}
	}
	cout<<ans*2<<endl;
	return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...