90分求助WA#6
查看原帖
90分求助WA#6
723205
xjsmsms楼主2023/12/31 10:33
#include <bits/stdc++.h>
#include <stack>
#include <queue>
#include <map>
#include <set>
#define re register
//volatile signed new operator private public protected auto enum mutable explicit export extern static constexpr const register unsigned long long short int N = 1e9+10;
#define sq volatile signed new operator private public protected auto enum mutable explicit export extern static constexpr const register unsigned long long short int N = 1e9+10;
#define endl '\n'
#define ri register int
#define rep(i,a,b) for(register int i = (a);i<=(b);++i)
#define REP(i,a,b,c) for(register int i = (a);i<=(b);i+=c)
#define _for(i,a,n) for (register int i = (a); i <  (n); ++i)
#define _rep(i,a,n) for (register int i = (a); i <= (n); ++i)
#define _per(i,n,a) for (register int i = (n); i >= (a); --i)
#define it iterator 
#define reit reverse_iterator
#define ll long long 
#define DB double
#define map mp
//#pragma GCC optimize(2)
//#pragma GCC optimize(3,"Ofast","inline")
using namespace std;
const int maxn = 2147483647;
const int N =500;
int dx[5] = {0,0,1,-1};
int dy[5] = {1,-1,0,0};
int map[N][N];
int step[N][N];
inline int dfs(int x,int y){
	if(step[x][y]) return step[x][y];
	step[x][y]=1;
	for(int i=0;i<4;++i){
		int xx = x+dx[i],yy =y+dy[i];
		if(map[xx][yy]<map[x][y]){
			step[x][y]= max(step[x][y],dfs(xx,yy)+1);
		}
	}	
	return step[x][y];
}
signed main(){
	int n,m;
	cin >>n>>m;
	for(int i =0;i<=n+1;++i){
		map[i][0] =map[i][n+1] = maxn;
	}
	for(int i =0;i<=m+1;++i){
		map[0][i] = map[m+1][i] = maxn;
	}
	for(int i =1;i<=n;++i){
		for(int j =1;j<=m;++j){
			cin >>map[i][j];
		}
	}
	int ans =0;
	for(int i =1;i<=n;++i){
		for(int j =1;j<=m;++j){
			ans = max(ans,dfs(i,j));
		}
	}
	cout <<ans;
	return 0;
}
2023/12/31 10:33
加载中...