๋ถ์
์ด ๋ฌธ์ ๋ฅผ ํ๋ ค๋ฉด bfs์ dfs์ ๋ํด์ ๋จผ์ ์์์ผํ๋ค.
dfs, bfs๋ ๊ทธ๋ํ๋ฅผ ํ์ํ ๋ ์ฌ์ฉํ๋ ์๊ณ ๋ฆฌ์ฆ์ธ๋ฐ, ๊ตฌํ ๋ฐฉ์์ด ๋ค๋ฅด๋ฏ๋ก ๋ชฉ์ ์ ๋ฐ๋ผ ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ด ์ฌ์ฉ๋๋ค.
(*๊ทธ๋ํ : ๋ ธ๋์ ๊ฐ์ ์ผ๋ก ์ด๋ฃจ์ด์ง ์๋ฃ๊ตฌ์กฐ์ ์ผ์ข )
๊น์ด ์ฐ์ ํ์(bfs)
- ๋ฃจํธ ๋ ธ๋์์ ์์ํด์ ๋ค์ ๋ถ๊ธฐ๋ก ๋์ด๊ฐ๊ธฐ ์ ์ ํด๋น ๋ถ๊ธฐ๋ฅผ ์์ ํ๊ฒ ํ์ํ๋ ๋ฐฉ์์ ๋งํ๋ค.
์คํ , ์ฌ๊ทํจ์๋ก ๊ตฌํ์ด ๊ฐ๋ฅํ์ง๋ง ์ฌ๊ทํจ์๋ก ๊ตฌํํ๋ฉด ์ข ๋ ๊ฐ๋ตํ ์ฝ๋๊ฐ ๋์จ๋ค.
๋ชจ๋ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํด์ผํ๊ฑฐ๋ , ๊ทธ๋ํ๊ฐ ํฐ ๊ฒฝ์ฐ ์ฌ์ฉ
๋๋น ์ฐ์ ํ์(bfs)
- ์ธ์ ํ ๋ ธ๋๋ฅผ ๋จผ์ ํ์ํ๋ ๋ฐฉ์์ ๋งํ๋ค.
๊ฐ๊น์ด ๋ ธ๋๋ฅผ ๋จผ์ ๋ฐฉ๋ฌธํ๊ณ ๋ฉ๋ฆฌ์๋ ๋ ธ๋๋ฅผ ๋์ค์ ๋ฐฉ๋ฌธํ๋ค.
ํ๋ก ๊ตฌํํ ์ ์๋ค.
์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ ๊ฒฝ์ฐ ์ฌ์ฉ
์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
static StringBuilder sb = new StringBuilder();
static int node, line, start;
static int[][] arr;
static boolean[] visit;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
node = Integer.parseInt(st.nextToken());
line = Integer.parseInt(st.nextToken());
start = Integer.parseInt(st.nextToken());
visit = new boolean[node + 1];
arr = new int[node + 1][node + 1];
for (int i = 0; i < line; i++) {
StringTokenizer str = new StringTokenizer(br.readLine());
int a = Integer.parseInt(str.nextToken());
int b = Integer.parseInt(str.nextToken());
arr[a][b] = arr[b][a] = 1;
}
dfs(start);
visit = new boolean[node + 1];
sb.append("\n");
bfs(start);
System.out.println(sb);
}
static void dfs(int start) {
sb.append(start + " ");
visit[start] = true;
for (int i = 1; i <= node; i++) {
if (arr[start][i] == 1 && !visit[i]) {
dfs(i);
}
}
}
static void bfs(int start) {
Queue<Integer> q = new LinkedList<>();
q.add(start);
visit[start] = true;
while(!q.isEmpty()){
int value = q.poll();
sb.append(value+" ");
for(int i=1;i<=node;i++){
if(arr[value][i] == 1 && !visit[i]){
visit[i] = true;
q.add(i);
}
}
}
}
}
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 11723 ์งํฉ JAVA (2) | 2023.03.23 |
---|---|
[๋ฐฑ์ค] ๋ฐฑ์ค ๊ณจ๋ ๋ฌ์ฑ ! (0) | 2023.03.22 |
๋ฐฑ์ค 3085๋ฒ) ์ฌํ ๊ฒ์ java (0) | 2023.03.09 |
๋ฐฑ์ค 2156๋ฒ) ํฌ๋์ฃผ ์์ java (0) | 2023.03.01 |
๋ฐฑ์ค 9465) ์คํฐ์ปค java (0) | 2023.02.27 |