์ค๋์ ํ์ต ํค์๋
- BFS
๋ฌธ์ - ๋ฏธ๋ค๋ฌ
ํน์ ๊ฑฐ๋ฆฌ์ ๋์ ์ฐพ๊ธฐ
ํ์ด
import java.util.*;
class Main {
static int n; // ๋์์ ์
static int m; // ๋๋ก์ ๊ฐ์
static int k; // ๊ฑฐ๋ฆฌ ์ ๋ณด
static int x; // ์ถ๋ฐ ๋์ ๋ฒํธ
static int[] visited;
static ArrayList<ArrayList<Integer>> graph;
static void bfs(int start) {
Queue<Integer> q = new LinkedList<>();
q.offer(start);
visited[start] = 0;
while(!q.isEmpty()) {
int x = q.poll();
for(int i = 0; i < graph.get(x).size(); i++) {
int y = graph.get(x).get(i);
if (visited[y] == -1) {
q.offer(y);
visited[y] = visited[x] + 1;
}
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
m = sc.nextInt();
k = sc.nextInt();
x = sc.nextInt();
visited = new int[n + 1];
Arrays.fill(visited, -1);;
graph = new ArrayList<>();
for(int i = 0; i <= n; i++) {
graph.add(new ArrayList<Integer>());
}
for(int i = 0; i < m; i++) {
int x = sc.nextInt();
int y = sc.nextInt();
graph.get(x).add(y);
}
bfs(x);
ArrayList<Integer> answer = new ArrayList<>();
for(int i = 0; i < visited.length; i++) {
if(visited[i] == k) answer.add(i);
}
if(answer.size() == 0) {
System.out.println(-1);
} else {
for(int ans : answer) {
System.out.println(ans);
}
}
}
}
- BFS๋ฅผ ์์ฉํ์ฌ ํ์ดํ์ต๋๋ค.
- ์๋ฐฉํฅ์ด ๊ทธ๋ํ ํ์ด์ ์ต์ํด ๋ฌธ์ ๋ฅผ ์ ๋๋ก ์ฝ์ง ๋ชปํ๊ณ ๋จ๋ฐฉํฅ์ ์ฃผ์ํ์ง ๋ชปํด ์ฒ์์ ํ๋ ธ์ต๋๋ค.
'๐ Study' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[99ํด๋ฝ ์ฝํ ์คํฐ๋] 15์ผ์ฐจ (1) | 2024.11.11 |
---|---|
[99ํด๋ฝ ์ฝํ ์คํฐ๋] 9์ผ์ฐจ (0) | 2024.11.06 |
[99ํด๋ฝ ์ฝํ ์คํฐ๋] 8์ผ์ฐจ (4) | 2024.11.04 |
[99ํด๋ฝ ์ฝํ ์คํฐ๋] 5์ผ์ฐจ (0) | 2024.11.01 |
[99ํด๋ฝ ์ฝํ ์คํฐ๋] 4์ผ์ฐจ (1) | 2024.10.31 |