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
'CS > Algorithm' 카테고리의 다른 글
[백준:2178] 미로탐색 - JAVA (0) | 2021.05.02 |
---|---|
[백준:2667] 단지번호 붙이기 - JAVA (0) | 2021.05.02 |
[백준:1389] 케빈 베이컨의 6단계 법칙 - JAVA (0) | 2021.04.29 |
[백준:4963] 섬의 개수 - JAVA (0) | 2021.04.11 |
[백준: 2644] 촌수계산 - JAVA (0) | 2021.04.11 |