11725번: 트리의 부모 찾기 (acmicpc.net)
11725번: 트리의 부모 찾기
루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오.
www.acmicpc.net
[조건]
- 입력으로 노드 번호의 양방향 관계가 주어짐
[구현]
- ArrayList 배열에 각 노드의 관계를 저장
- DFS로 탐색하면서 부모노드를 파악
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
Scanner sc=new Scanner(System.in);
static int N;
static ArrayList<Integer>[] arr;
static boolean[] visit;
static int[] num;
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
N=sc.nextInt();
visit=new boolean[N+1];
arr=new ArrayList[N+1];
num=new int[N+1];
for(int i=0;i<=N;i++) {
arr[i]=new ArrayList<>();
}
for(int i=0;i<N-1;i++) {
int a=sc.nextInt();
int b=sc.nextInt();
arr[b].add(a);
arr[a].add(b);
}
dfs(1,0);
for(int i=2;i<=N;i++) System.out.println(num[i]);
}
static void dfs(int x, int cnt) { //노드 번호, 방문한 노드의 개수
if(cnt==N-1) return;
for(int i=0;i<arr[x].size();i++) {
int n=arr[x].get(i);
if(visit[n]) continue;
visit[n]=true;
num[n]=x;//방문하지 않은 노드의 부모 노드는 X
dfs(n, cnt+1);
}
}
}
'코테 공부' 카테고리의 다른 글
[백트래킹] N-Queen ☆☆☆ (0) | 2023.02.21 |
---|---|
[DP]알약(백준 4811번, 자바)☆☆☆ (0) | 2023.02.16 |
[SWEA] 사칙연산 유효성 검사(1233번, 자바) (0) | 2023.02.15 |
링크와 스타트(백준 15661번)☆ (0) | 2023.02.15 |
배열돌리기2(백준 16927번, 자바)☆ (0) | 2023.02.15 |