-
[Baekjoon] 11725번 트리의 부모 찾기 (Java)Java/Baekjoon 2022. 8. 28. 22:41
예제 입력1
7 1 6 6 3 3 5 4 1 2 4 4 7
예제 출력1
4 6 1 3 1 4
예제 입력2
12 1 2 1 3 2 4 3 5 3 6 4 7 4 8 5 9 5 10 6 11 6 12
예제 출력2
1 1 2 3 3 4 4 5 5 6 6
package Q11725; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; public class Main { static ArrayList<ArrayList<Integer>> arr; static int[] parent; public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int num = Integer.parseInt(br.readLine()); parent = new int[num+1]; arr = new ArrayList<>(); for(int i = 0; i<=num; i++) arr.add(new ArrayList<>()); for(int i = 0; i<num - 1; i++){ String[] st = br.readLine().split(" "); int from = Integer.parseInt(st[0]); int to = Integer.parseInt(st[1]); arr.get(from).add(to); // 인덱스 from에 to 추가 arr.get(to).add(from); // 인덱스 to에 from 추가 } bfs(); for(int i = 2; i<=num; i++) System.out.println(parent[i]); } static void bfs(){ Queue<Integer> queue = new LinkedList<>(); queue.offer(1); // offer() 삽입 // remove() = poll() 삭제 // element() = peek() 맨앞 while(!queue.isEmpty()){ int num = queue.poll(); // pop for(int i = 0; i < arr.get(num).size(); i++){ // 인덱스num의 크기만큼 반복(연결된 노드 수) int next = arr.get(num).get(i); // next: arr의 인덱스 num에 있는 것 중에 인덱스 i번째 있는 수 if(parent[next] == 0){ // parent 배열 인덱스 next에 아무것도 없다면 parent[next] = num; // num 추가 queue.offer(next); // 큐에 next 삽입 } } } } }
728x90'Java > Baekjoon' 카테고리의 다른 글
[Baekjoon] 16953번 A -> B (Java) (0) 2022.08.29 [Baekjoon] 1991번 트리 순회 (Java) (0) 2022.08.29 [Baekjoon] 15652번 N과 M(4) (Java) (0) 2022.08.28 [Baekjoon] 15650번 N과 M(2) (Java) (0) 2022.08.28 [Baekjoon] 2407번 조합(Java) (0) 2022.08.27