백준
[백준] 1260 DFS와BFS (JAVA)
sami355
2021. 8. 18. 15:33
이 문제는 DFS와 BFS를 구현만 하면 되는 간단한 문제이다.
DFS는 재귀로 진행하였고 BFS는 큐로 풀었다 다음에는 DFS를 스택으로 풀어보아야겠다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class Main {
static int n;
static int m;
static int start;
static boolean[] visited;
static int[][] check;
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());
start = Integer.parseInt(st.nextToken());
check = new int[1001][1001];
for (int i = 0; i < m; i++) {
st = new StringTokenizer(br.readLine(), " ");
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
check[x][y] = 1;
check[y][x] = 1;
}
visited = new boolean[1001];
dfs(start);
visited = new boolean[1001];
System.out.println();
bfs(start);
}
public static void dfs(int curr_node) {
visited[curr_node] = true;
System.out.print(curr_node + " ");
for (int j = 0; j <= n; j++) {
if (check[curr_node][j] == 1 && visited[j] == false) {
dfs(j);
}
}
}
public static void bfs(int cutt_node) {
Queue<Integer> queue = new LinkedList<>();
queue.offer(cutt_node);
visited[cutt_node] = true;
System.out.print(cutt_node + " ");
while (!queue.isEmpty()) {
int temp = queue.poll();
for (int j = 0; j <= n; j++) {
if (check[temp][j] == 1 && visited[j] == false) {
queue.offer(j);
visited[j] = true;
System.out.print(j + " ");
}
}
}
}
}