比赛 20120418x 评测结果 AWTTTT
题目名称 圣诞节 最终得分 16
用户昵称 TBK 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2012-04-18 16:36:37
显示代码纯文本
#include <iostream> 
#include <cstdio> 
#include <cstdlib> 
#include <cmath> 
#include <cstring> 
#include <string> 
#include <iomanip> 
#include <vector> 
#include <set> 
#include <algorithm> 
#define MAXN 0x7fffffff 
using namespace std; 
int a[500][2],k[500][2],b,c,d,s=MAXN,t=0,r[500][500];
bool bo[500];
void DFS(int x)
{
	int i,j;
	if (x==b)
	{
		if (t<s) s=t;
		return;
	}
	for (i=0;i<b;i++)
	{
		if (x==0) t=r[x][i];
		if (bo[i]==false)
		{ 
			bo[i]=true;
			j=t;
			if (r[x][i]>t) t=r[x][i];
			DFS(x+1);
			t=j;
			bo[x]=false;
		}
	}
}
int main(void) 
{ 
    freopen("christmas.in","r",stdin); 
    freopen("christmas.out","w",stdout); 
    scanf("%d",&b);
	for (c=0;c<b;c++) scanf("%d%d",&a[c][0],&a[c][1]);
	for (c=0;c<b;c++) scanf("%d%d",&k[c][0],&k[c][1]);
	for (c=0;c<b;c++)
		for (d=0;d<b;d++)
			r[c][d]=(a[c][0]-k[d][0])*(a[c][0]-k[d][0])+(a[c][1]-k[d][1])*(a[c][1]-k[d][1]);
	DFS(0);
	printf("%d",s);
	fclose(stdin);
    fclose(stdout); 
    return 0; 
}