This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<stdio.h>
#include<queue>
#include<algorithm>
using namespace std;
int map[1011][1011];
int aa[1011][1011];
int cnt[1011][1011];
int mx=0;
int gox[4]={0,0,1,-1};
int goy[4]={1,-1,0,0};
void bfs(int x,int y)
{
queue<int> qx,qy,qz;
int tx,ty,tz,i;
aa[x][y]=1;
qx.push(x);
qy.push(y);
qz.push(0);
while(!qx.empty()){
tx=qx.front();
ty=qy.front();
tz=qz.front();
qx.pop();
qy.pop();
qz.pop();
for(i=0;i<4;i++){
if(map[tx+gox[i]][ty+goy[i]]==0 && (aa[tx+gox[i]][ty+goy[i]]==0 || cnt[tx+gox[i]][ty+goy[i]]>tz+1)){
aa[tx+gox[i]][ty+goy[i]]=1;
cnt[tx+gox[i]][ty+goy[i]]=tz+1;
qx.push(tx+gox[i]);
qy.push(ty+goy[i]);
qz.push(tz+1);
}
}
}
}
int main()
{
int m,n,i,j;
scanf("%d %d",&m,&n);
for(i=0;i<=1010;i++){
for(j=0;j<=1010;j++)
map[i][j]=-1;
}
for(i=1;i<=n;i++){
for(j=1;j<=m;j++)
scanf("%d",&map[i][j]);
}
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
if(map[i][j]==1)
bfs(i,j);
}
}
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
if(map[i][j]==0 && aa[i][j]==0) {printf("-1");return 0;}
if(cnt[i][j]>mx) mx=cnt[i][j];
}
}
printf("%d",mx);
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |