[BFS] 14. ๊ทธ๋ํ ์ต๋จ ๊ฑฐ๋ฆฌ
<<ํ์ด>>
์ด ๋ฌธ์ ๋ 1๋ฒ ์ ์ ์์ ๊ฐ ์ ์ ๊น์ง์ ์ต์ ๊ฐ์ ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ค.
Level๋ก ํ ์๋ ์์ง๋ง, ๊ทธ ์ธ์ dis๋ผ๋ ๋ฐฐ์ด์ ์ฌ์ฉํ๋ค. ์ด๋ 1์์ ๋ถํฐ ํด๋น ๊ฐ๊น์ง ์ค๊ธฐ ์ํ ๊ฐ์ ์ ์๋ฅผ ์ ์ฅํด๋๊ณ ์๋ค.
๊ทธ๋ฆฌ๊ณ ์์ง ๋ฑ๋ก์ด ๋์ง ์์ ๊ฐ๋ค์ ์ฐ๊ฒฐ๋์ด ์๋ ์ด์ ๊ฐ๋ค ๊น์ง ์ค๊ธฐ ๊น์ง์ ๊ฐ์ ์ ์์ + 1์ ํด์ค๋ค.
๊ทธ๋ ๊ฒ ํด์ ์ต์ข ์ ์ผ๋ก dis์ ๋ฐ์ดํฐ๋ ์ธ๋ฑ์ค ๊ฐ์ 1์์ 2, 3, 4, 5 ๋ก ํน์ ์์น๋ก ๊ฐ๋ค๊ณ ๋ช ํํ๊ฒ ํ์ํ๊ณ ๊ทธ ๋ ๊ฐ์ ๊ฐ์ ๊ฐ์ง๊ณ ์๋ค.
*์ธ๋ฑ์ค ๊ฐ์ด ์ค์ ๊ฐ 1, 2, 3 ๋ฑ์ผ๋ก ํํํด์ ๋ช ํํ๊ฒ ํ๊ธฐ ์ํด์ ์ด๊ธฐ ๋ฐฐ์ด ์ ์ธ ๋ถํฐ [n] ์ด ์๋ [n + 1]๋ก ์ง์ ํ๋ค.
*๋ง์ฝ 1 -> 2๋ก ๊ฐ๋ ๊ฒ๋ ์์ง๋ง 1 -> 3 -> 2๋ก ๊ฐ๋ ๊ฒ๋ ์๋ค๋ฉด ์ด๋ป๊ฒ ์ต์ ๊ฐ์ ์ธ ๊ฒ์ ๊ตฌ๋ถํ์ง? ๋ผ๋ ์๊ฐ์ ์ด๊ธฐ์ ํ๋๋ฐ ์๊ฐํด๋ณด๋๊น ch[] ๋ผ๋ ์ฒดํฌํ๋ ๋ฐฐ์ด๋ก ํตํด์ ์ด๋ฏธ ๊ฐ ๊ณณ์ 1๋ก ๋๊ธฐ ๋๋ฌธ์ ์ฌ์ ์ 1 -> 2๋ก ๊ฐ ๊ฒ์ด ์๋ค๋ฉด 1 -> 3 -> 2๋ก ๊ฐ๋ ๊ฒ์ ๋บ ์ ์๋ ๊ฒ์ด๋ค.
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
class Main {
static int n, m;
static ArrayList<ArrayList<Integer>> graph;
static int[] ch, dis;
public void BFS(int v) {
Queue<Integer> queue = new LinkedList<>();
ch[v] = 1;
dis[v] = 0;
queue.offer(v);
while (!queue.isEmpty()) {
int cv = queue.poll();
for(int nv : graph.get(cv)) {
if (ch[nv] == 0) {
ch[nv] = 1;
queue.offer(nv);
dis[nv] = dis[cv] + 1;
}
}
}
}
public static void main(String[] args) {
Main T = new Main();
Scanner in = new Scanner(System.in);
n = in.nextInt();
m = in.nextInt();
graph = new ArrayList<ArrayList<Integer>>();
for (int i = 0; i <= n; i++) {
graph.add(new ArrayList<Integer>());
}
ch = new int[n + 1];
dis = new int[n + 1];
for (int i = 0; i < m; i++) {
int a = in.nextInt();
int b = in.nextInt();
graph.get(a).add(b);
}
T.BFS(1);
for (int i = 2; i <= n; i++) {
System.out.println(i + " : " + dis[i]);
}
}
}
์ฌ๊ธฐ๊น์ง DFS BFS ์ ์ฌ๋ฌ๊ฐ์ง ๋ฌธ์ ํ์์ ์ ํด๋ณด์๋ค. ์ดํด๋ ํ์ง๋ง ์์ง๊น์ง ์๋ฒฝํ ๋ด ๊ฒ์ ์๋ ๊ฒ ๊ฐ๋ค. ์ด์ ๋ถํฐ ๋ณธ๊ฒฉ์ ์ผ๋ก ๊ธฐ์ถ์ ํ์ด ๋ณผํ ๋ฐ ์์ ํ ๋ด ๊ฒ์ด ๋ ์ ์๋๋ก ๊ณต๋ถํด๋ณด์!!
'์ฝ๋ฉํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DFS] 2. ๋ฐ๋์ด ์น์ฐจ (70) | 2024.02.16 |
---|---|
[DFS] 1. ํฉ์ด ๊ฐ์ ๋ถ๋ถ์งํฉ (3) | 2024.02.14 |
[DFS] 13. ๊ฒฝ๋กํ์(์ธ์ ๋ฆฌ์คํธ, ArrayList) (2) | 2024.02.10 |
[DFS] 12. ๊ฒฝ๋กํ์ (1) | 2024.02.08 |
[BFS] 10. ๋ง๋จ๋ ธ๋๊น์ง์ ๊ฐ์ฅ ์งง์ ๊ฒฝ๋ก (1) | 2024.02.06 |
๋๊ธ