90分求条
  • 板块灌水区
  • 楼主An_OIer
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/11/12 23:20
  • 上次更新2024/11/13 05:37:07
查看原帖
90分求条
1280618
An_OIer楼主2024/11/12 23:20
#include<bits/stdc++.h>
using namespace std;
int n,m,i,j,ans=1,s,a[1001][1001],f[1001][1001];
int d[4][2]= {0,1,1,0,-1,0,0,-1};
void dfs(int x,int y,int st)
{
	if(f[x][y]>st)
	{
		return ;
	}
	f[x][y]=max(f[x][y],st);
	for(int i=0; i<4; i++)
	{
		int dx=x+d[i][0];
		int dy=y+d[i][1];
		if(a[x][y]>a[dx][dy]&&dx>=1&&dx<=n&&dy>=1&&dy<=m)
		{
			dfs(dx,dy,st+1);
		}
		else
			ans=max(ans,st);
	}
}
int main()
{
	cin>>n>>m;
	for(int i=1; i<=n; i++)
	{
		for(int j=1; j<=m; j++)
		{
			cin>>a[i][j];
		}
	}
	for(int i=1; i<=n; i++)
	{
		for(int j=1; j<=m; j++)
		{
			dfs(i,j,1);
		}
	}
	cout<<ans;
	return 0;
}

[SHOI2002] 滑雪
P1434

2024/11/12 23:20
加载中...