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 | import java.util.ArrayList; import java.util.Scanner; import java.io.FileInputStream; class Solution { static int N; static int[][] adj; static int[] visited; static ArrayList<Integer> queue; public static void main(String args[]) throws Exception { // Scanner sc = new Scanner(new FileInputStream("sample_input.txt")); Scanner sc = new Scanner(System.in); N = sc.nextInt(); int M = sc.nextInt(); int V = sc.nextInt() - 1; adj = new int[N][N]; visited = new int[N]; queue = new ArrayList<Integer>(); for (int i = 0; i < M; i++) { int u = sc.nextInt() - 1; int v = sc.nextInt() - 1; adj[u][v] = 1; adj[v][u] = 1; } DFS(V); visited = new int[N]; System.out.println(); BFS(V); } // main static void DFS(int curr) { visited[curr] = 1; System.out.print(curr + 1); System.out.print(" "); for (int i = 0; i < N; i++) { if (adj[curr][i] == 1 && visited[i] == 0) { DFS(i); } } } // DFS static void BFS(int curr) { visited[curr] = 1; queue.add(curr); while (queue.isEmpty() != true) { curr = queue.get(0); queue.remove(0); System.out.print(curr + 1); System.out.print(" "); for (int i = 0; i < N; i++) { if (adj[curr][i] == 1 && visited[i] == 0) { visited[i] = 1; queue.add(i); } } } } // BFS } | cs |
'공부 > 알고리즘문제' 카테고리의 다른 글
백준 2178 미로 탐색 (0) | 2017.04.15 |
---|---|
백준 2644 촌수계산 (0) | 2017.04.15 |
백준 1012 유기농 배추 (0) | 2017.04.13 |
백준 13458 시험 감독 (0) | 2017.04.12 |
백준 14499 주사위 굴리기 (0) | 2017.04.12 |