[백준 1260] DFS와 BFS - 인접 행렬 이용
Algorithm/백준(BOJ)

[백준 1260] DFS와 BFS - 인접 행렬 이용

반응형

[백준 1260] DFS와 BFS


문제 출처 : 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
68
69
70
71
72
73
74
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
 
public class Problem1260 {
 
    static int[][] map;
    static boolean[] visited;
    static int n, m, v;
    
    public static void dfs(int v, int n){
        if(visited[v]) return;
        
        visited[v] = true;
        System.out.print(v + " ");
        
        for (int i = 1; i <= n; i++) {
            if(map[v][i] == 1){
                dfs(i, n);
            }
        }
    }
    
    public static void bfs(int v, int n) {
        Queue<Integer> q = new LinkedList<>();
        
        q.add(v);
        
        while(!q.isEmpty()){
            int temp = q.poll();
            visited[temp] = true;
            System.out.print(temp + " ");
            for (int i = 1; i <= n; i++) {
                if(map[temp][i] == 1 && visited[i] == false){
                    q.add(i);
                    visited[i] = true;
                }
            }
        }
    }
    
    public static void main(String[] args) throws Exception {
        
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        String[] str = br.readLine().split(" ");
        
        n = Integer.parseInt(str[0]);
        m = Integer.parseInt(str[1]);
        v = Integer.parseInt(str[2]);
        
        map = new int[n+1][n+1];
        visited = new boolean[n+1];
        
        for (int i = 0; i < m; i++) {
            String[] vv = br.readLine().split(" ");
            
            int v1 = Integer.parseInt(vv[0]);
            int v2 = Integer.parseInt(vv[1]);
            
            map[v1][v2] = map[v2][v1] = 1;
        }
        
        dfs(v, n);
        
        System.out.println();
        visited = new boolean[n+1];
        
        bfs(v, n);
    }
}
 
cs


반응형

'Algorithm > 백준(BOJ)' 카테고리의 다른 글

[백준 11724] 연결 요소의 개수  (0) 2019.02.04
[백준 2178] 미로 탐색  (0) 2019.02.02
[백준 10026] 적록색약  (0) 2019.01.30
[백준 2468] 안전 영역  (0) 2019.01.29
[백준 2667] 단지번호 붙이기  (0) 2019.01.29