爆0求调

P1141 01迷宫

qyh_qianyuheng2012 @ 2024-12-27 23:52:19

#include<bits/stdc++.h>
using namespace std;
bool b[1005][1005];
char a[1005][1005];
int n,m,s[100005];
int maxn;
void f(int x,int y,int cnt,char z){
    if(a[x][y]==z&&cnt>1)
      return;
    if(x>n||y>n||x<1||y<1||b[x][y])
      return;
    b[x][y]=1;
    maxn=max(maxn,cnt);
    f(x-1,y,cnt+1,a[x][y]);
    f(x,y-1,cnt+1,a[x][y]);
    f(x+1,y,cnt+1,a[x][y]);
    f(x,y+1,cnt+1,a[x][y]);
}
int main(){
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
      for(int j=1;j<=n;j++)
        cin>>a[i][j];
    for(int i=1;i<=m;i++){
        for(int j=1;j<=n;j++)
          for(int k=1;k<=n;k++)
            b[j][k]=0;
        int x,y;
        maxn=0;
        scanf("%d%d",&x,&y);
        f(x,y,1,a[x][y]);
        s[i]=maxn;
    }
    for(int i=1;i<=m;i++)
      printf("%d\n",s[i]);
    return 0;
}

|