View
๋ฌธ์
๊ทธ๋ํ๋ฅผ DFS๋ก ํ์ํ ๊ฒฐ๊ณผ์ BFS๋ก ํ์ํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ๋จ, ๋ฐฉ๋ฌธํ ์ ์๋ ์ ์ ์ด ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ์๋ ์ ์ ๋ฒํธ๊ฐ ์์ ๊ฒ์ ๋จผ์ ๋ฐฉ๋ฌธํ๊ณ , ๋ ์ด์ ๋ฐฉ๋ฌธํ ์ ์๋ ์ ์ด ์๋ ๊ฒฝ์ฐ ์ข ๋ฃํ๋ค. ์ ์ ๋ฒํธ๋ 1๋ฒ๋ถํฐ N๋ฒ๊น์ง์ด๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ ์ ์ ๊ฐ์ N(1 ≤ N ≤ 1,000), ๊ฐ์ ์ ๊ฐ์ M(1 ≤ M ≤ 10,000), ํ์์ ์์ํ ์ ์ ์ ๋ฒํธ V๊ฐ ์ฃผ์ด์ง๋ค. ๋ค์ M๊ฐ์ ์ค์๋ ๊ฐ์ ์ด ์ฐ๊ฒฐํ๋ ๋ ์ ์ ์ ๋ฒํธ๊ฐ ์ฃผ์ด์ง๋ค. ์ด๋ค ๋ ์ ์ ์ฌ์ด์ ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ์ด ์์ ์ ์๋ค. ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ ๊ฐ์ ์ ์๋ฐฉํฅ์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ DFS๋ฅผ ์ํํ ๊ฒฐ๊ณผ๋ฅผ, ๊ทธ ๋ค์ ์ค์๋ BFS๋ฅผ ์ํํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค. V๋ถํฐ ๋ฐฉ๋ฌธ๋ ์ ์ ์์๋๋ก ์ถ๋ ฅํ๋ฉด ๋๋ค.
์์ ์ ๋ ฅ 1
5 5 3
5 4
5 2
1 2
3 4
3 1
์์ ์ถ๋ ฅ 1
3 1 2 5 4
3 1 4 2 5
๐คฆโ๏ธ My Solution
package WS;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Queue;
import java.util.Stack;
import java.util.StringTokenizer;
public class BJ_1260 {
static int N, M, V;
static int[][] link;
static boolean[] check;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
V = Integer.parseInt(st.nextToken());
link = new int[1001][1001];
int x, y;
for (int i = 0; i < M; i++) {
st = new StringTokenizer(br.readLine());
x = Integer.parseInt(st.nextToken());
y = Integer.parseInt(st.nextToken());
link[y][x] = link[x][y] = 1; // ๊ฐ์ ์ฐ๊ฒฐ ์ํ
}
check = new boolean[1001];
DFS();
check = new boolean[1001];
System.out.println();
BFS();
}
static void BFS() {
Queue<Integer> que = new ArrayDeque<>();
que.add(V);// ์์์ ๋ฃ์
check[V] = true;
System.out.print(V + " "); // ์์์ ์ถ๋ ฅ
while (!que.isEmpty()) { // ํ๊ฐ ๋น์ด์์ง ์์๋๊น์ง
int node = que.poll(); // ๋งจ์ฒ์: ์์๊ฐ์ ๊บผ๋ด์ด
for (int i = 1; i <= N; i++) {
if (link[i][node] == 1 && check[i] == false) {
que.add(i);
System.out.print(i + " ");
check[i] = true;
}
}
}
}
static void DFS() {
Stack<Integer> que = new Stack<>();
que.push(V);// ์์์ ๋ฃ์
while (!que.isEmpty()) { // ํ๊ฐ ๋น์ด์์ง ์์๋๊น์ง
int node = que.pop(); // ๋งจ์ฒ์: ์์๊ฐ์ ๊บผ๋ด์ด
if (check[node])
continue;
check[node] = true;
System.out.print(node + " ");
for (int i = N; i >= 1; i--) {
if (link[i][node] == 1 && check[i] == false) {
que.push(i);
}
}
}
}
}
'์๊ณ ๋ฆฌ์ฆ > ์ฝ๋ฉํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BJ]10974๋ฒ: ๋ชจ๋ ์์ด(Java) (0) | 2022.08.30 |
---|---|
[BJ] 1987๋ฒ: ์ํ๋ฒณ(Java) (0) | 2022.08.30 |
[SWEA] 1247๋ฒ: ์ต์ ๊ฒฝ๋ก(Java) (0) | 2022.08.30 |
[BJ] 3109: ๋นต์ง(Java) (0) | 2022.08.30 |
[์ ์ฌ] 1828: ๋์ฅ๊ณ (Java) (0) | 2022.08.30 |