P1434 广搜30分求助 1R1T5W
查看原帖
P1434 广搜30分求助 1R1T5W
87461
林子浩楼主2021/6/3 20:06
#include<bits/stdc++.h>
using namespace std;
int n,m,a[101][101],b[101][101]={0};
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
void bfs(int x,int y)
{
	int qx[10001],qy[10001],head=1,tail=1;
	qx[1]=x;qy[1]=y;b[x][y]=1;
	while(head>=tail)
	{
		for(int i=0;i<4;i++)
		{
			int xx=qx[tail]+dx[i];
			int yy=qy[tail]+dy[i];
			if(xx>0&&xx<=n&&yy>0&&yy<=m&&a[qx[tail]][qy[tail]]>a[xx][yy])
			{
				head++;
				qx[head]=xx;
				qy[head]=yy;
				b[xx][yy]=b[qx[tail]][qy[tail]]+1;
			}
		}
		tail++;
	}
}
int main()
{
    int i,j,qx,qy,maxx=0;
    cin>>n>>m;
    for(i=1;i<=n;i++)
    	for(j=1;j<=m;j++)
    	{
    		cin>>a[i][j];
    		if(a[i][j]>maxx)
    		{
    			maxx=a[i][j];
    			qx=i;
    			qy=j;
			}
		}
    bfs(qx,qy);
    maxx=0;
	for(i=1;i<=n;i++)
    	for(j=1;j<=m;j++)
			maxx=max(b[i][j],maxx);
	cout<<maxx;	
}
2021/6/3 20:06
加载中...