比赛 20101118 评测结果 WWWWWWWWWA
题目名称 扩散 最终得分 10
用户昵称 Citron酱 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2010-11-18 09:08:47
显示代码纯文本
#include <fstream>

#define I_F "ppg.in"
#define O_F "ppg.out"
#define MAX 50

using namespace std;

short n;
long x[MAX],y[MAX];
long map[MAX][MAX];
long ans;

long Abs(long x);
long Max(long a, long b);
void Input();
void Ycl();
void Floyd();
void Search();
void Output();

int main()
{
	Input();
	Ycl();
	Floyd();
	Search();
	Output();
	return 0;
}

long Abs(long x)
{
	if (x>0)
		return x;
	else
		return (-x);
}

long Max(long a, long b)
{
	if (a>b)
		return a;
	else
		return b;
}

void Input()
{
	ifstream fin(I_F);
	fin>>n;
	for (short i=0; i<n; fin>>y[i++])
		fin>>x[i];
	fin.close();
}

void Ycl()
{
	short i,j;
	for (i=0; i<n; i++)
		for (j=0; j<n; j++)
		{
			map[i][j]=(Abs(x[i]-x[j])+Abs(y[1]-y[j])+1)/2;
			map[j][i]=map[i][j];
		}
}

void Floyd()
{
	short i,j,k;
	for (k=0; k<n; k++)
		for (i=0; i<n; i++)
			for (j=0; j<n; j++)
				if (Max(map[i][k],map[k][j])<map[i][j])
					map[i][j]=Max(map[i][k],map[k][j]);
}

void Search()
{
	short i,j;
	for (i=0; i<n; i++)
		for (j=0; j<n; j++)
			if (map[i][j]>ans)
				ans=map[i][j];
}

void Output()
{
	ofstream fout(O_F);
	fout<<ans<<'\n';
	fout.close();
}