比赛 20161223 评测结果 AAAAAAAAAA
题目名称 哞投 最终得分 100
用户昵称 Shirry 运行时间 1.336 s
代码语言 C++ 内存使用 19.37 MiB
提交时间 2016-12-23 19:50:20
显示代码纯文本
#include<cstdio>
#include<algorithm>
#define INF 99999999
using namespace std;
struct poi{
	int x,y;
};
poi B[1000];
int n,C[1000000]={0},F[1000000]={0},p=INF;
int u[1000000]={0},v[1000000]={0},w[1000000]={0};
int cmp(int x,int y){
	return w[x]<w[y];
}
int Findfather(int x){
	if(F[x]==x)return x;
	F[x]=Findfather(F[x]);
	return F[x];
}
int main(){
	freopen("moocast.in","r",stdin);
	freopen("moocast.out","w",stdout);
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		int x,y;
		scanf("%d%d",&x,&y);
		B[i].x=x;
		B[i].y=y;
	}
	int k=1;
	for(int i=1;i<=n*n;i++){C[i]=i;F[i]=i;}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			int a,b;
			a=(B[i].x-B[j].x)*(B[i].x-B[j].x);
			b=(B[i].y-B[j].y)*(B[i].y-B[j].y);
			u[k]=i;
			v[k]=j;
			w[k]=a+b;
			k++;
		}
	}
	sort(C+1,C+k+1,cmp);
	for(int i=1;i<=k;i++){
		int d=C[i];
		int xx=Findfather(u[d]);
		int yy=Findfather(v[d]);
		if(xx!=yy){
			p=w[d];
			F[xx]=yy;
		}
	}
	printf("%d",p);
	return 0;
	
}