firenation   3년 전

import java.util.*;
class Pair{
int x; 
int y; 
Pair(int x, int y){
this.x=x;
this.y=y;
}
}
public class Main{
static int map[][];
static int check[][];
static int[]dx ={-1,1,0,0};
static int[]dy={0,0,-1,1};
static int n,m;

public static void bfs( int n, int m, int map[][], int d){
Queue<Pair> q= new LinkedList<Pair>();
for(int i=0; i<n; i++){
for( int j=0; j<m; j++){
if(map[i][j]==d){
q.add(new Pair(i,j));
}
}
}
if(q.isEmpty()) return;
while(!q.isEmpty()){
Pair p=q.remove();
int x=p.x;
int y=p.y;
for(int i=0; i<4; i++){
int nx = x+dx[i];
int ny = y+dy[i];
if(0<=nx & 0<=ny && nx<n && ny<m){
if(map[nx][ny]==0){
map[nx][ny]=d+1;
}
}
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc= new Scanner(System.in);
m=sc.nextInt();
n=sc.nextInt();
sc.nextLine();
map=new int[n][m];
check=new int[n][m];
for(int i=0; i<n; i++){
for( int j=0; j<m; j++){
map[i][j]=sc.nextInt();
}
}

for(int d=1; d<=n+m+2; d++){
bfs(n, m, map, d);
}
int result=0;
for(int i=0; i<n; i++){
for( int j=0; j<m; j++){
if(map[i][j]==0){
result=n*m+10;
}else{
result=Math.max(result, map[i][j]);
}
}
}

if(result==n*m+10) System.out.println(-1);
else System.out.println(result-1);

}
}

djm03178   3년 전

어떤 칸에도 토마토가 들어있지 않다면 모든 토마토가 익어있는 것과 마찬가지입니다.

댓글을 작성하려면 로그인해야 합니다.