제출 #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...