제출 #4946

#제출 시각아이디문제언어결과실행 시간메모리
4946hana5505토마토 (KOI13_tomato)C++98
16 / 16
908 ms13220 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...