DFS์ BFS (Lv. Sliver2)
1. ๋ฌธ์
2. ํ์ด
1. ๋ฌธ์
https://www.acmicpc.net/problem/1260
2. ํ์ด
import java.util.*;
import java.io.*;
class Main {
static int[][] graph;
static boolean[] visited;
public static void dfs(int V) {
visited[V] = true;
System.out.print(V + " ");
if (V == graph.length) {
return;
}
for (int i = 1; i < graph.length; i++) {
if (graph[V][i] == 1 && visited[i] == false) {
dfs(i);
}
}
}
public static void bfs(int V) {
Queue<Integer> q = new LinkedList<>();
q.add(V);
visited[V] = true;
System.out.print(V + " ");
while (!q.isEmpty()) {
int tmp = q.poll();
for (int i = 1; i < graph.length; i++) {
if (graph[tmp][i] == 1 && visited[i] == false) {
q.add(i);
visited[i] = true;
System.out.print(i + " ");
}
}
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int V = Integer.parseInt(st.nextToken());
graph = new int[N+1][N+1];
for (int i = 0; i < M; i++) {
st = new StringTokenizer(br.readLine());
int u = Integer.parseInt(st.nextToken());
int v = Integer.parseInt(st.nextToken());
graph[u][v] = graph[v][u] = 1;
}
visited = new boolean[N+1];
dfs(V);
System.out.println();
visited = new boolean[N+1];
bfs(V);
}
}
์์ ์ฝ๋๋ก ์์ ๊ฐ์ ํํ์ ํธ๋ฆฌ๊ฐ ์กด์ฌํ ๋ DFS์ BFS ํ์ ๋ฐฉ์์ ์ ์ ์์ต๋๋ค.
- DFS
ํ์ฌ ๋ ธ๋์ ์ฐ๊ฒฐ๋ ๋ ธ๋ ์ค ๋ฐฉ๋ฌธํ์ง ์์ ๋ ธ๋๋ฅผ ์ฌ๊ท์ ์ผ๋ก ํ์ํฉ๋๋ค.
1 -> 2 -> 4 -> 3 -> 5 ์ ์์๋ก ๋์ํฉ๋๋ค.
- BFS
์ฐ์ ์์ ํ๋ฅผ ํ์ฉํด์ ๊ฐ๊น์ด ๋ ธ๋ ์์๋๋ก ํ์ํฉ๋๋ค.
1 -> 2 -> 3 -> 4 -> 5 ์ ์์๋ก ๋์ํฉ๋๋ค.
๋ฌธ์ ๊ฐ ์์ผ๋ฉด ๋๊ธ ๋จ๊ฒจ์ฃผ์ธ์ !
ํผ๋๋ฐฑ์ ์ธ์ ๋ ํ์์ ๋๋ค <3
'๐ก Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ํธ๋ฆฌ์ ๋ถ๋ชจ ์ฐพ๊ธฐ (Lv. Sliver2) (0) | 2025.02.21 |
---|---|
[Java] ํธ๋ฆฌ ์ํ (Lv. Sliver1) (2) | 2025.02.20 |
[Huffman] ํํ๋ง ์๊ณ ๋ฆฌ์ฆ (0) | 2025.02.14 |
[Java] ์งํฉ์ ํํ - ์ ๋์จ ํ์ธ๋ (Lv. Gold5) (0) | 2025.02.14 |
[Graph] ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ๊ณผ ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ (0) | 2025.02.13 |