Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include<bits/stdc++.h>using namespace std;int N;int m[501][501][5];int main(){int i,j,k,l;char r[510];int max=0;scanf("%d",&N);memset(m,0,sizeof(m));for(i=0;i<N;i++){scanf("%s",&r);for(j=0;j<N;j++){m[i][j][0]=m[i][j][1]=m[i][j][2]=m[i][j][3]=m[i][j][4]=r[j]-'0';if(m[i][j][0]==1){if(i>0 && m[i-1][j][0]==1)m[i][j][1]=m[i-1][j][1]+1;if(j>0 && m[i][j-1][0]==1)m[i][j][2]=m[i][j-1][2]+1;}}}for(i=N-1;i>=0;i--){for(j=N-1;j>=0;j--){if(m[i][j][0]==1){if(i<N-1 && m[i+1][j][0]==1)m[i][j][3]=m[i+1][j][3]+1;if(j<N-1 && m[i][j+1][0]==1)m[i][j][4]=m[i][j+1][4]+1;k=min(min(m[i][j][1],m[i][j][2]),min(m[i][j][3],m[i][j][4]));if(k>max)max=k;