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>
int dt[1001][1001], level[1001][1001];
int m, n;
short queueX[1000001], queueY[1000001];
int dx[4]={-1, 1, 0, 0};
int dy[4]={0, 0, 1, -1};
int main(){
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
scanf("%d %d", &m, &n);
int i, j;
int head=1, tail=0;
int cnt=0;
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
scanf("%d", &dt[i][j]);
if(dt[i][j]==1){queueX[++tail]=i; queueY[tail]=j; level[i][j]=1;}
if(dt[i][j]==0){cnt++;}
}
}
bool check=false;
while(head<=tail){
int curx, cury;
curx=queueX[head];
cury=queueY[head];
head++;
for(i=0;i<4;i++){
int ax, ay;
ax=curx+dx[i];
ay=cury+dy[i];
if(dt[ax][ay]==0 && 1<=ax && ax<=n && 1<=ay && ay<=m){
dt[ax][ay]=1; queueX[++tail]=ax, queueY[tail]=ay;
level[ax][ay]=level[curx][cury]+1;
cnt--;
if(cnt==0){printf("%d", level[ax][ay]-1); check=true;}
}
}
}
if(!check) printf("-1");
else return 0;
return 0;
}
# | 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... |