-
백준 1260번 DFS와 BFS (자바)코딩테스트 2021. 6. 11. 14:49
import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public class Test { static int n; static int m; static int[][] adjacent; static boolean[] visited; public static void main(String args[]) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); n = Integer.parseInt(st.nextToken()); m = Integer.parseInt(st.nextToken()); int startNum = Integer.parseInt(st.nextToken()); adjacent = new int[n+1][n+1]; visited = new boolean[n+1]; for (int i = 0; i < m; i++) { st = new StringTokenizer(br.readLine()); int n1 = Integer.parseInt(st.nextToken()); int n2 = Integer.parseInt(st.nextToken()); adjacent[n1][n2] = 1; adjacent[n2][n1] = 1; } dfs(startNum); visited = new boolean[n+1]; System.out.println(); bfs(startNum); } static void dfs(int start) { visited[start] = true; System.out.print(start + " "); for(int i = 1; i < (n+1); i++) { if(adjacent[start][i] == 1 && !visited[i]) { dfs(i); } } } static void bfs(int start) { Queue<Integer> queue = new LinkedList<>(); visited[start] = true; queue.add(start); System.out.print(start + " "); while (!queue.isEmpty()) { int tmp = queue.poll(); for (int i = 0; i < (n+1); i++) { if(adjacent[tmp][i] == 1 && !visited[i]) { queue.add(i); visited[i] = true; System.out.print(i + " "); } } } } }
'코딩테스트' 카테고리의 다른 글
백준 2178번 미로탐색(자바) - BFS (0) 2021.06.16 백준 2667번 단지번호 붙이기 - BFS (0) 2021.06.16 백준 2583번 영역 구하기(자바) - dfs, bfs (0) 2021.06.10 백준 1003번 피보나치 함수(자바) - DP (0) 2021.06.07 백준 9095번 1,2,3 더하기(java) - DP (0) 2021.06.01