반응형
[광고 누르면 오늘의 행운 상승!!]
https://www.acmicpc.net/problem/11725
쉬운 트리 문제
1. 간선을 ArrayList를 이용하여 저장한다.
2. dfs를 이용하여 자신과 이어져 있는 노드들의 Parents 배열 인덱스를 자신으로 채워넣는다.
3. 차례대로 부모를 출력한다,.
package Study2;
import java.io.*;
import java.util.*;
class Node{
int node;
Node parent;
Node(int node){
this.node = node;
}
}
public class 트리의부모찾기 {
static ArrayList<ArrayList<Node>> graph;
static boolean visit[];
static int parent[];
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
graph = new ArrayList<>();
visit = new boolean[N];
parent = new int[N];
for (int i = 0; i < N; i++) {
graph.add(new ArrayList<>());
}
for (int i = 0; i < N-1; i++) {
st = new StringTokenizer(br.readLine());
int A = Integer.parseInt(st.nextToken())-1;
int B = Integer.parseInt(st.nextToken())-1;
graph.get(A).add(new Node(B));
graph.get(B).add(new Node(A));
}
visit[0] = true;
dfs(0);
for (int i = 1; i < N; i++) {
System.out.println(parent[i]+1);
}
}
private static void dfs(int cur) {
for(Node next : graph.get(cur)) {
if(!visit[next.node]) {
visit[next.node] = true;
parent[next.node] = cur;
dfs(next.node);
visit[next.node] = false;
}
}
}
}
반응형
'2. 알고리즘사이트 > 1. 백준' 카테고리의 다른 글
플로이드 [백준 11404][JAVA][골드 4][플로이드 와샬][floydWarshall] (0) | 2020.04.11 |
---|---|
최소 스패닝 트리 [백준 1197][JAVA][골드 4][Prim][Kruskal][MST] (1) | 2020.04.11 |
아기 상어 [백준 16236][JAVA][골드 5][BFS][시뮬레이션][PQ] (0) | 2020.04.01 |
미친 로봇 [백준 1405][Java][DFS][확률] (0) | 2020.03.30 |
입국심사 [백준 3079][Java][이분탐색] (0) | 2020.03.30 |