Skip to content

Commit bf3e707

Browse files
committed
14496 그대, 그머가 되어
1 parent 43508dd commit bf3e707

File tree

1 file changed

+41
-38
lines changed

1 file changed

+41
-38
lines changed

src/main/java/bfs/silver/silver_2/_14496.java

Lines changed: 41 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -5,66 +5,69 @@
55

66
public class _14496 {
77

8-
static int a, b, n, m;
9-
static List<Integer>[] graph;
10-
static boolean[] visited;
8+
private static int n;
9+
private static int m;
10+
private static int result = -1;
1111

12-
/** 가중치가 없는 최단경로 구하는 문제 : BFS */
13-
private static String bfs() {
14-
15-
Queue<int[]> queue = new LinkedList<>();
16-
queue.offer(new int[]{a, 0});
17-
visited[a] = true;
18-
19-
while (!queue.isEmpty()) {
20-
int[] now = queue.poll();
21-
22-
if (now[0] == b) {
23-
return String.valueOf(now[1]);
24-
}
25-
26-
for (Integer i : graph[now[0]]) {
27-
if (!visited[i]) {
28-
visited[i] = true;
29-
queue.offer(new int[]{i, now[1] + 1});
30-
}
31-
}
32-
}
33-
34-
return "-1";
35-
}
12+
private static List<Integer>[] graph;
13+
private static boolean[] visited;
3614

3715
public static void main(String[] args) throws IOException {
3816
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
3917
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
4018
StringTokenizer st = new StringTokenizer(br.readLine());
4119

42-
a = Integer.parseInt(st.nextToken());
43-
b = Integer.parseInt(st.nextToken());
20+
int a = Integer.parseInt(st.nextToken());
21+
int b = Integer.parseInt(st.nextToken());
4422

4523
st = new StringTokenizer(br.readLine());
4624
n = Integer.parseInt(st.nextToken());
4725
m = Integer.parseInt(st.nextToken());
4826

4927
graph = new List[n + 1];
50-
for (int i = 0; i <= n; i++) {
51-
graph[i] = new ArrayList<>();
52-
}
5328
visited = new boolean[n + 1];
5429

30+
for (int i = 1; i <= n; i++) {
31+
graph[i] = new LinkedList<>();
32+
}
33+
5534
for (int i = 0; i < m; i++) {
5635
st = new StringTokenizer(br.readLine());
5736

58-
int u = Integer.parseInt(st.nextToken());
59-
int v = Integer.parseInt(st.nextToken());
37+
int x = Integer.parseInt(st.nextToken());
38+
int y = Integer.parseInt(st.nextToken());
6039

61-
// 양방향 연결
62-
graph[u].add(v);
63-
graph[v].add(u);
40+
graph[x].add(y);
41+
graph[y].add(x);
6442
}
6543

66-
bw.write(bfs());
44+
bfs(a, b);
45+
46+
bw.write(String.valueOf(result));
6747
bw.flush();
6848
bw.close();
6949
}
50+
51+
private static void bfs(int startNode, int endNode) {
52+
Queue<int[]> queue = new LinkedList<>();
53+
queue.offer(new int[]{startNode, 0});
54+
visited[startNode] = true;
55+
56+
while (!queue.isEmpty()) {
57+
int[] cur = queue.poll();
58+
59+
if (cur[0] == endNode) {
60+
result = cur[1];
61+
return;
62+
}
63+
64+
for (int node : graph[cur[0]]) {
65+
if (!visited[node]) {
66+
visited[node] = true;
67+
queue.offer(new int[]{node, cur[1] + 1});
68+
}
69+
}
70+
}
71+
}
72+
7073
}

0 commit comments

Comments
 (0)