1. 입력받을 때는 아래와 같이 nextInt() 써서 입력받자
2. List<Integer> queue = new ArrayList<>(); 보다 Queue<Integer> queue = new LinkedList<>();가 효율적이다.
-> 전자는 삭제시 모든 데이터를 앞으로 땡기기위해 옮겨야 하지만 후자는 그렇지 않기 때문이다.
3. 단방향이기에 방문처리가 필요없다.
import java.util.*;
public class Q1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int k = sc.nextInt();
int x = sc.nextInt();
List<List<Integer>> map = new ArrayList<>();
int[] distance = new int[n+1];
for (int i=0; i<=n; i++) {
map.add(new ArrayList<Integer>());
distance[i] = -1;
}
for (int i=0; i<m; i++) {
int from = sc.nextInt();
int to = sc.nextInt();
map.get(from).add(to);
}
distance[x] = 0;
Queue<Integer> queue = new LinkedList<>();
queue.add(x);
while (queue.size() > 0) {
int now = queue.poll();
for(int next : map.get(now)){
if (distance[next] == -1) {
distance[next] = distance[now]+1;
queue.add(next);
}
}
}
boolean check = false;
for (int i = 1; i <= n; i++) {
if (distance[i] == k) {
System.out.println(i);
check = true;
}
}
if (!check){
System.out.println(-1);
}
}
}
'Algorithm > Practice' 카테고리의 다른 글
이코테 - 정렬된 배열에서 특정 수의 개수 구하기 (0) | 2023.09.05 |
---|---|
이코테 - 안테나 with JAVA (0) | 2023.09.04 |
Programmers - 무지의 먹방 라이브 with JAVA (0) | 2023.08.09 |
이코테 - 만들 수 없는 금액 with JAVA (0) | 2023.08.09 |
Programmers - 등산 코스 정하기 with JAVA (0) | 2023.08.06 |