๐ ๋ฌธ์ ๋งํฌ
๐ ํ์ด ๊ณผ์
- ํธ๋ฆฌ ์ ํ์ ๋ฌธ์ ์
๋๋ค.
- ํ์ด์๋ DFS(์คํ, ์ฌ๊ท), BFS ์ฌ๋ฌ๊ฐ์ง ํ์ด๊ฐ ์์ง๋ง ์ ๋ DFS(์ฌ๊ท)๋ฅผ ์ด์ฉํด์ ํ์์ต๋๋ค.
- ํธ๋ฆฌ์ ๋ํด์ ์ฒ์ ์์ํ๋ ๋ถ๋ค์๊ฒ ์ข์ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๐ป ์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.StringTokenizer;
public class Main {
static int n;
static ArrayList<Integer>[] list;
static int[] parents;
static boolean[] visited;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
list = new ArrayList[n+1];
parents = new int[n+1];
visited = new boolean[n+1];
for(int i = 1; i< n+1; i++){
list[i] = new ArrayList<>();
}
for(int i = 1; i< n; i++){
StringTokenizer st = new StringTokenizer(br.readLine()," ");
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
list[a].add(b);
list[b].add(a);
}
for(int i = 1; i< n+1; i++){
if(!visited[i]){
dfs(i);
}
}
for(int i = 2; i< n+1; i++){
System.out.println(parents[i]);
}
}
private static void dfs(int i){
if(visited[i]){
return;
}
visited[i] = true;
for(int v : list[i]){
if(!visited[v]){
parents[v] = i;
dfs(v);
}
}
}
}
'Algorithm > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 16953๋ฒ : A -> B (Java) (0) | 2022.03.22 |
---|---|
๋ฐฑ์ค 1991๋ฒ : ํธ๋ฆฌ ์ํ (Java) (0) | 2022.02.12 |
๋ฐฑ์ค 1753๋ฒ : ์ต๋จ๊ฒฝ๋ก (Java) (0) | 2022.02.12 |
๋ฐฑ์ค 2206๋ฒ : ๋ฒฝ ๋ถ์๊ณ ์ด๋ํ๊ธฐ (Java) (0) | 2022.02.12 |
๋ฐฑ์ค 11660๋ฒ : ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ 5(Java) (0) | 2022.01.17 |