Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- kotlin
- java
- 네트워크
- 자료구조
- 그래프
- OS
- programmers
- lambda
- 백트래킹
- DFS
- Spring
- 프로젝트
- 프로그래머스
- 모던자바
- 운영체제
- Brute-force
- LEVEL2
- DP
- 자바
- 알고리즘
- 코틀린
- 스프링
- back-end
- Java8
- backtracking
- baekjoon
- BFS
- algorithm
- TDD
- 백준
Archives
- Today
- Total
요깨비's LAB
[백준, DFS, JAVA] P11725. 트리의 부모 찾기 본문
노드 객체를 만들고 적절히 DFS 탐색하면서 부모노드를 갱신해주면 됩니다. 여기에서 이미 갱신된 부모노드는 갱신하지 않도록 예외를 걸어주었습니다.
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
public class Main {
static int N;
static Element[] elements;
static boolean[] visited;
public static void main(String[] args) {
Scanner scr = new Scanner(System.in);
N = scr.nextInt();
elements = new Element[N + 1];
visited = new boolean[N + 1];
for (int i = 1; i <= N; i++) {
elements[i] = new Element(i);
}
for (int i = 1; i <= N-1; i++) {
int num1 = scr.nextInt();
int num2 = scr.nextInt();
elements[num1].linkedElements.add(elements[num2]);
elements[num2].linkedElements.add(elements[num1]);
}
// for (int i = 1; i <= N; i++) {
// dfs(i, i);
// }
elements[1].parent = 1;
dfs(1);
for(int i=2;i<=N;i++) {
System.out.println(elements[i].parent);
}
}
public static void dfs(int start) {
// System.out.println(start + "시작!");
if (elements[start].isVisited) {
// System.out.println(start + " 방문함");
return;
}
elements[start].isVisited = true;
Iterator<Element> itr = elements[start].linkedElements.iterator();
while(itr.hasNext()) {
Element element = itr.next();
if(element.parent == -1)
element.parent = start;
dfs(element.id);
}
}
}
class Element {
int id;
int parent = -1;
List<Element> linkedElements = new ArrayList<>();
boolean isVisited = false;
public Element(int id) {
this.id = id;
}
}
'알고리즘(Java) > BFS&DFS' 카테고리의 다른 글
[백준, BFS, Java] P.2146 다리 만들기 (0) | 2021.09.20 |
---|---|
[백준, BFS, Java] P.2638 치즈 (0) | 2021.08.31 |
[백준, Graph, JAVA] P.11403 경로찾기 (0) | 2019.12.11 |
[백준, DFS, JAVA] P.2668 숫자 고르기 (0) | 2019.12.05 |
[백준, BFS, JAVA] P.1707 이분 그래프 (0) | 2019.12.05 |
Comments