๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/5006)
< Horror List >
๋ฌธ์ ํ์ด
bfs๋ฅผ ํ์ฉํ์ฌ horror ์ํ์, ์ ์ฌํ ์ํ๋ฅผ ์ฐพ๋๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class _5006_ { // Horror List
static ArrayList<ArrayList<Integer>> list;
static int visited[];
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine());
int n = Integer.parseInt(st.nextToken());
int h = Integer.parseInt(st.nextToken());
int l = Integer.parseInt(st.nextToken());
st = new StringTokenizer(bf.readLine());
Queue<Integer> queue = new LinkedList<>();
visited = new int[n];
for (int i = 0; i < n; i++) {
visited[i] = Integer.MAX_VALUE;
}
for (int i = 0; i < h; i++) {
int num = Integer.parseInt(st.nextToken());
queue.add(num);
visited[num] = 0;
}
list = new ArrayList<>();
for (int i = 0; i < n; i++) {
list.add(new ArrayList<>());
}
for (int i = 0; i < l; i++) {
st = new StringTokenizer(bf.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
list.get(a).add(b);
list.get(b).add(a);
}
bfs(queue);
int value = 0, result = 0;
for (int i = 0; i < n; i++) {
if (value < visited[i]) {
value = visited[i];
result = i;
}
}
System.out.println(result);
}
private static void bfs(Queue<Integer> queue) {
while (!queue.isEmpty()) {
int num = queue.poll();
for (int i = 0; i < list.get(num).size(); i++) {
if (visited[list.get(num).get(i)] == Integer.MAX_VALUE) {
visited[list.get(num).get(i)] = visited[num] + 1;
queue.add(list.get(num).get(i));
}
}
}
}
}
๋ณ์)
n, h, l : ์ํ์ ๊ฐ์, horror list์ ํฌํจ๋ ์ํ์ ์, ์ ์ฌ์ฑ์ ๋ฐ์ดํฐ ์
visited : Horror Index
list : ์ ์ฌํ ์ํ ์ ๋ณด
value, result : Horror Index๊ฐ ๊ฐ์ฅ ๋์ ๊ฐ, Horror Index๊ฐ ๊ฐ์ฅ ๋์ ์ํ
Main
์ํ์ ๊ฐ์, horror list์ ํฌํจ๋ ์ํ์ ์, ์ ์ฌ์ฑ์ ๋ฐ์ดํฐ ์๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. ์ํ์ ๊ฐ์๋งํผ Horror Index๋ฅผ ์ ์ฅํ๋ ๋ฐฐ์ด์ ๋ง๋ค์ด Integer.MAX_VALUE๋ก ์ด๊ธฐํํ๋ค. horror list์ ํฌํจ๋ ์ํ์ ์๋งํผ ์ํ ID๋ฅผ ์ ๋ ฅ๋ฐ์ queue์ ์ ์ฅํ๊ณ , Horror Index๋ฅผ 0์ผ๋ก ์ ์ฅํ๋ค. ์ ์ฌ์ฑ์ ๋ฐ์ดํฐ ์๋งํผ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅ๋ฐ์ ArrayList์ ์๋ฐฉํฅ์ผ๋ก ์ ์ฅํ๋ค. bfs๋ฅผ ํธ์ถํ๋ค.
์ต์ข visited๋ฅผ ํ์ํ๋ฉฐ horror Index๊ฐ ๋์ ๊ฐ ์ค ID๊ฐ ๋ฎ์ ๊ฐ์ ์ถ๋ ฅํ๋ค.
bfs
Queue๊ฐ ๋น ๋๊น์ง ๋ค์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
1) queue poll
2) ์์ง ๋ฐฉ๋ฌธํ์ง ์์ ๊ณณ์ด๋ผ๋ฉด visited ๊ฐ์ ์ฐ๊ฒฐ๋ ์ํ์ horror index+1๋ก ์ ๋ฐ์ดํธํ ํ queue์ ์ถ๊ฐํ๋ค.

'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Baekjoon] 26111_Parentheses Tree (0) | 2025.11.18 |
|---|---|
| [Baekjoon] 11254_Hydraulic Arm (0) | 2025.11.17 |
| [Baekjoon] 5957_Cleaning the Dishes (0) | 2025.11.14 |
| [Baekjoon] 14540_Railway Station (0) | 2025.11.12 |
| [Baekjoon] 4992_Hanafuda Shuffle (0) | 2025.11.10 |