比赛 20120712 评测结果 AAAAAAAAAA
题目名称 登山 最终得分 100
用户昵称 KZNS 运行时间 0.034 s
代码语言 C++ 内存使用 0.33 MiB
提交时间 2016-02-17 10:43:08
显示代码纯文本
//KZNS
#include <fstream>
#include <cstring>
using namespace std;
//
ifstream fin ("hike.in");
ofstream fout ("hike.out");
//
#define GO1(a,b) if(0<=a&&a<n&&0<=b&&b<m&&(!fff[a][b])&&(mp[x][y]<mp[a][b]))ans=max(ans,DFS(a,b,true));
#define GO0(a,b) if(0<=a&&a<n&&0<=b&&b<m&&(!fff[a][b])&&(mp[x][y]>mp[a][b]))ans=max(ans,DFS(a,b,false));
//
int mp[62][62];
bool fff[62][62];
int n, m;
//
int DFS(int x, int y, bool tp) {
	fff[x][y]=true;
	int ans=0;
	if (tp) {
		GO1(x+1,y);
		GO1(x,y+1);
		GO1(x-1,y);
		GO1(x,y-1);
	}
		GO0(x+1,y);
		GO0(x,y+1);
		GO0(x-1,y);
		GO0(x,y-1);
	fff[x][y]=false;
	return ans+1;
}
//
int main() {
	
	fin >>n >>m;
	for (int i=0; i<n; i++)
		for (int j=0; j<m; j++)
			fin >>mp[i][j];
	memset(fff, 0, sizeof(fff));
	int ed=0;
	for (int i=0; i<n; i++)
		for (int j=0; j<m; j++)
			ed=max(ed, DFS(i, j, true));
	fout <<ed;
	return 0;
}
//UBWH