이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
import java.io.*;
import java.util.*;
public class tracks {
static int h;
static int w;
static char[][] arr;
static int[][] dist;
public static void main(String[] args) {
Kattio io = new Kattio();
h = io.nextInt();
w = io.nextInt();
arr = new char[h][w];
dist = new int[h][w];
for (int i=0; i<h; i++) {
String s = io.next();
for (int j=0; j<w; j++) {
arr[i][j] = s.charAt(j);
}
}
dist[0][0] = 1;
Deque<int[]> q = new LinkedList<>();
q.add(new int[]{0, 0});
while (!q.isEmpty()) {
int[] curr = q.poll();
int x = curr[0];
int y = curr[1];
for (int i=0; i<4; i++) {
int nx = x + dx[i];
int ny = y + dy[i];
if (nx < 0 || nx >= h || ny < 0 || ny >= w
|| dist[nx][ny] > 0
|| arr[nx][ny] == '.') {
continue;
}
if (arr[x][y] != arr[nx][ny]) {
dist[nx][ny] = dist[x][y] + 1;
q.addLast(new int[]{nx, ny});
} else {
dist[nx][ny] = dist[x][y];
q.addFirst(new int[]{nx, ny});
}
}
}
int max = 0;
for (int i=0; i<h; i++) {
for (int j=0; j<w; j++) {
//System.out.print(dist[i][j] + " ");
max = Math.max(max, dist[i][j]);
}
//System.out.println();
}
System.out.println(max);
}
static final int[] dx = {1, -1, 0, 0};
static final int[] dy = {0, 0, 1, -1};
static class Kattio extends PrintWriter {
private BufferedReader r;
private StringTokenizer st;
// standard input
public Kattio() { this(System.in, System.out); }
public Kattio(InputStream i, OutputStream o) {
super(o);
r = new BufferedReader(new InputStreamReader(i));
}
// USACO-style file input
public Kattio(String problemName) throws IOException {
super(new FileWriter(problemName + ".out"));
r = new BufferedReader(new FileReader(problemName + ".in"));
}
// returns null if no more input
public String next() {
try {
while (st == null || !st.hasMoreTokens())
st = new StringTokenizer(r.readLine());
return st.nextToken();
} catch (Exception e) { }
return null;
}
public int nextInt() { return Integer.parseInt(next()); }
public double nextDouble() { return Double.parseDouble(next()); }
public long nextLong() { return Long.parseLong(next()); }
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |