比赛 20161223 评测结果 AAAAAAAAAA
题目名称 哞投 最终得分 100
用户昵称 Mealy 运行时间 0.489 s
代码语言 C++ 内存使用 0.32 MiB
提交时间 2016-12-23 20:13:49
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <cmath>

#define pb push_back

using namespace std;


const int nmax=1086;

int n;
int ans=0;


class point
{
public:
	int x;
	int y;
}poi[nmax];


class edge
{
public:
	int u,v;
	int len;
};

vector<edge> edges;


class UFS
{
public:
	int p[nmax];
	void SetSet(int n)
	{
		for(int i=1;i<=n;i++)
			p[i]=i;
	}
	int Find(int x)
	{
		if(x==p[x])
			return x;
		else
		{
			p[x]=Find(p[x]);
			return p[x];
		}
	}
	void Merge(int x,int y)
	{
		int fx=Find(x);
		int fy=Find(y);
		p[fx]=fy;
	}
}f;


int GetLen(int a,int b)
{
	int tmpx=(poi[a].x-poi[b].x)*(poi[a].x-poi[b].x);
	int tmpy=(poi[a].y-poi[b].y)*(poi[a].y-poi[b].y);
	int tmplen=tmpx+tmpy;
	return tmplen;
}


void PreDo()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%d%d",&poi[i].x,&poi[i].y);
	}
}

void SetG()
{
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			if(i<j)
			{	
				int tmplen=GetLen(i,j);
				edges.pb((edge){i,j,tmplen});
			}
		}
	}
}


bool cmp(edge a,edge b)
{
	return a.len<b.len;
}


void MST()
{
	SetG();
	f.SetSet(n);
	sort(edges.begin(),edges.end(),cmp);
	for(int i=0;i<edges.size();i++)
	{
		if(f.Find(edges[i].u)!=f.Find(edges[i].v))
		{
			ans=max(edges[i].len,ans);
			f.Merge(edges[i].u,edges[i].v);
		}
	}
}


void Out()
{
	printf("%d",ans);
}


int main()
{
	freopen("moocast.in","r",stdin);
	freopen("moocast.out","w",stdout);
	PreDo();
	MST();
	Out();
	return 0;
}












/*
 
2577. 哞投
 
★   输入文件:moocast.in
 
*/