#include<bits/stdc++.h>
using namespace std;
int n,m,ans,place[1501][1501],dp[1501][1501];
int main()
{
int i,j;
scanf("%d%d",&n,&m);
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
scanf("%d",&place[i][j]);
if (place[1][1])
place[1][0]=place[0][1]=0;
else
place[1][0]=place[0][1]=1;
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
if (place[i][j]==0&&place[i-1][j]==1&&place[i][j-1]==1){
dp[i][j]=min(dp[i-1][j-1],min(dp[i][j-1],dp[i-1][j]))+1;
}
else if (place[i][j]==1&&place[i-1][j]==0&&place[i][j-1]==0){
dp[i][j]=min(dp[i-1][j-1],min(dp[i][j-1],dp[i-1][j]))+1;
}
}
}
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
ans=max(ans,dp[i][j]);
printf("%d\n",ans+1);
return 0;
}
原本想着随便试一下,结果A掉了?????