728x90
반응형
https://www.acmicpc.net/problem/1260
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
import java.io.IOException;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Main {
static int node[][];// 인접행렬
static int check[];// 노드의 방문표시
static Queue<Integer> queue = new LinkedList<>();
public static void dfs(int start) {
if (check[start] == 1) {
return;
} else {
check[start] = 1;// sean 채워주기
}
System.out.print(start + " ");
for (int i = 1; i < node.length; i++) {
if (node[start][i] == 1) {
dfs(i);
}
}
}
public static void bfs(int start) {
queue.offer(start);
check[start] = 1;
while (!queue.isEmpty()) {
int x = queue.remove();
System.out.print(x + " ");
for (int i = 1; i < node.length; i++) {
if (check[i] != 1 && node[x][i] == 1) {
queue.offer(i);
check[i] = 1;
}
}
}
}
public static void main(String[] args) throws NumberFormatException, IOException {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();// 정점의 개수
int m = sc.nextInt();// 간선의 개수
int start = sc.nextInt();// 탐색 시작
node = new int[n + 1][n + 1];
check = new int[n + 1];
for (int i = 0; i < m; i++) { // 인접행렬
int a = sc.nextInt();
int b = sc.nextInt();
node[a][b] = 1;
node[b][a] = 1;
}
dfs(start);
Arrays.fill(check, 0);
System.out.println("");
bfs(start);
}
}
|
cs |
그래프 구현이 처음이라 재귀로 구현한 DFS같은 경우는 도저히 감이 안와서(사실 BFS도...) 다른 사람의 코드를 참고했다.
우선 dfs의 경우 열은 행과 인접한 것이 채택(?)된다 생각하면 된다.
이게 무슨 말이냐면
첫번째로 x에는 1이 들어가고 arr[1][2]가 가장 먼저 1이 되어있다. 그러면 열인 2가 다음번 행으로 채택된다!
근데 check[2][1]의 경우 dfs(1)을 했을 때 어차피 check[1]=1이므로 리턴된다.
그러면 check[2][4]가 유일한 1이므로 열인 4가 행으로 들어간다.
4행을 보면 이미 1,2는 그 값이 1이므로, 열이 3인게 다음 행으로 들어가면서
순서가 1 2 4 3이 되는 것이다!
728x90
반응형
'알고리즘 > 그래프' 카테고리의 다른 글
[java 백준] 실버 4/2331번 반복수열 (0) | 2021.09.26 |
---|---|
[java 백준]실버 2/ 10451번 순열 사이클 (0) | 2021.09.26 |
[java 백준] 실버 2/11724번 연결요소의 개수 (0) | 2021.09.25 |
[java 백준] 골드 4/ 1707번 이분 그래프 (0) | 2021.09.24 |
[그래프 개념] 그래프, DFS, BFS 정리 (0) | 2021.09.19 |
댓글