https://www.acmicpc.net/problem/15650
문제 해석
- DFS BFS 를 활용하여 탐색한 결과를 출력하는 프로그램을 작성하시오.
문제 풀이
DFS, BFS 구현!
import java.util.*;
public class Main {
static int Map[][];
static boolean[] Visited;
static int N,M,V;
public static void dfs(int i){
Visited[i] = true;
System.out.print(i+" ");
for(int j = 1; j < N+1; j++){
if(Map[i][j] == 1 && Visited[j] == false){
dfs(j);
}
}
}
public static void bfs(int i){
Queue<Integer> q = new LinkedList<Integer>();
q.offer(i);
Visited[i] = true;
while(!q.isEmpty()){
int temp = q.poll();
System.out.print(temp+" ");
for(int k = 1; k <= N; k++){
if(Map[temp][k] == 1 && Visited[k] == false){
q.offer(k);
Visited[k] = true;
}
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
M = sc.nextInt();
V = sc.nextInt();
Map =new int[N+1][N+1];
Visited= new boolean[N+1];
for (int[] row: Map) {
Arrays.fill(row, 0);
}
Arrays.fill(Visited, false);
for(int i = 0; i < M; i++){
int a = sc.nextInt();
int b = sc.nextInt();
Map[a][b]=1;
Map[b][a]=1;
}
dfs(V);
System.out.println();
Arrays.fill(Visited, false);
bfs(V);
}
}
'알고리즘 문제 풀이' 카테고리의 다른 글
[백준] 유기농 배추 (0) | 2021.04.22 |
---|---|
[백준] N과 M(2) (0) | 2021.04.22 |
[백준] N과 M (0) | 2021.04.16 |
[백준] 모든 순열 (0) | 2021.04.16 |
[프로그래머스] 2 x n 타일 (0) | 2021.04.15 |
댓글