比赛 |
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