比赛 |
20161223 |
评测结果 |
AAAAAAAAAA |
题目名称 |
哞投 |
最终得分 |
100 |
用户昵称 |
Arrow |
运行时间 |
0.464 s |
代码语言 |
C++ |
内存使用 |
6.17 MiB |
提交时间 |
2016-12-23 20:55:41 |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<utility>
#include<algorithm>
using namespace std;
namespace IO{
char buf[1<<15],*fs,*ft;
inline char gc(){return (fs==ft&&(ft=(fs=buf)+fread(buf,1,1<<15,stdin),fs==ft))?0:*fs++;}
inline int read(){
int x=0,rev=0,ch=gc();
while(ch<'0'||ch>'9'){if(ch=='-')rev=1;ch=gc();}
while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+ch-'0';ch=gc();}
return rev?-x:x;
}
}using namespace IO;
pair <int,int> cow[1010];
int fa[1010]={0};
struct dis
{
int u;
int v;
int w;
}edge[499510];
int cal(int x,int y)
{
return x*x+y*y;
}
bool cmp(dis x,dis y)
{
return x.w<y.w;
}
int find(int x)
{
if(fa[x]!=x) return fa[x]=find(fa[x]);
return x;
}
int main()
{
freopen("moocast.in","r",stdin);
freopen("moocast.out","w",stdout);
int n,m=0,k=0,ans=0;
n=read();
for(int i=1;i<=n;i++)
{
int h=read(),z=read();
cow[i]=make_pair(h,z);
}
for(int i=1;i<=n;i++)
{
for(int j=i+1;j<=n;j++)
{
edge[m].u=i;
edge[m].v=j;
edge[m].w=cal(cow[i].first-cow[j].first,cow[i].second-cow[j].second);
m++;
}
}
sort(edge,edge+m,cmp);
for(int i=1;i<=n;i++)
fa[i]=i;
int i=0;
while(k<n-1)
{
int fau=find(edge[i].u),fav=find(edge[i].v);
if(fav!=fau)
{
fa[fav]=fa[fau];
if(edge[i].w>ans)
ans=edge[i].w;
k++;
}
i++;
}
printf("%d\n",ans);
return 0;
}