广搜第二个点TLE,90分
查看原帖
广搜第二个点TLE,90分
944192
homi楼主2023/8/6 15:41
#include <bits/stdc++.h>
using namespace std;
int r,c,a[105][105],b[105][105],f[4][2]={{0,1},{1,0},{-1,0},{0,-1}},ans;
int main()
{
    cin>>r>>c;
    for(int i=1;i<=r;i++)
      for(int j=1;j<=c;j++)
        cin>>a[i][j];
    for(int i=1;i<=r;i++)
      for(int j=1;j<=c;j++)
        b[i][j]=1;
    for(int i=1;i<=r;i++)
      for(int j=1;j<=c;j++)
      {
      	  queue<int>qx,qy;
      	  qx.push(i);
      	  qy.push(j);
	      while(!qx.empty())
	      {
	      	  int ux=qx.front(),uy=qy.front();
	      	  qx.pop();
	      	  qy.pop();
	    	  for(int k=0;k<4;k++)
	    	  {
	    		  int x=ux+f[k][0],y=uy+f[k][1];
	    		  if(x>=0&&x<=r&&y>=0&&y<=c&&a[x][y]>a[ux][uy])
	    		  {
	    		  	  b[x][y]=max(b[ux][uy]+1,b[x][y]);
	    		  	  qx.push(x);
	    		  	  qy.push(y);	    		  	  
				  }
			  }
		  }        	
	  }
    for(int i=1;i<=r;i++)
      for(int j=1;j<=c;j++)
    	ans=max(ans,b[i][j]);
	cout<<ans;
    return 0;
} 
2023/8/6 15:41
加载中...