CS/Algorithm
[백준:1260번] DFS와 BFS - JAVA
yujindonut
2021. 5. 2. 19:13
728x90
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Main {
static int map[][];
static boolean visit[];
static int N, M;
private static void init(boolean[] visit) {
for(int i = 1; i <= N; i++) {
visit[i] = false;
}
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
N = scan.nextInt(); //정점의 개수
M = scan.nextInt(); //간선의 개수
int startV = scan.nextInt(); //탐색을 시작할 정점의 번호
map = new int[N+1][N+1];
visit = new boolean[N+1];
init(visit);
for(int i = 1; i <= M; i++) {
int x = scan.nextInt();
int y = scan.nextInt();
map[x][y] = map[y][x] = 1;
}
dfs(startV);
init(visit);
System.out.println();
bfs(startV);
scan.close();
}
public static void dfs(int v) {
visit[v] = true;
System.out.print(v + " ");
for(int i = 1; i <= N; i++) {
if(map[v][i] == 1 && visit[i] == false) {
dfs(i);
}
}
}
public static void bfs(int v) {
Queue<Integer> q = new LinkedList<>();
q.add(v);
visit[v] = true;
while(!q.isEmpty()) {
int n = q.poll();
System.out.print(n+" ");
for(int i = 1; i <= N; i++) {
if(map[n][i] == 1 && !visit[i]) {
q.add(i);
visit[i] = true;
}
}
}
}
}
728x90