알고리즘/백준
11725_트리의 부모 찾기
베리영young
2023. 12. 21. 02:03
사용 알고리즘: dfs, bfs
사용 언어: java
bfs썼을 때 시간
dfs썼을 때 시간
bfs코드
import java.util.*;
public class Main_bj_11725_bfs {
static int n;
static boolean[] visit;
static int[] parent;
static ArrayList<ArrayList<Integer>> graph = new ArrayList<ArrayList<Integer>>();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
parent = new int[n+1];
visit = new boolean[n+1];
graph = new ArrayList<>(n+1);
for (int i = 0; i < n+1; i++) {
graph.add(new ArrayList<Integer>());
}
for (int i = 1; i < n; i++) {
int s = sc.nextInt();
int e = sc.nextInt();
graph.get(s).add(e);
graph.get(e).add(s);
} //입력
visit[1] = true;
bfs(1);
for(int i=2; i<n+1; i++){
System.out.println(parent[i]);
}
}
private static void bfs(int root) {
Queue<Integer> q = new ArrayDeque<>();
q.offer(root);
while (!q.isEmpty()) {
int cur = q.poll();
visit[cur] = true;
for (int i = 0; i < graph.get(cur).size(); i++) {
int nxt = graph.get(cur).get(i);
if( !visit[nxt] ){
parent[nxt] = cur;
q.offer(nxt);
}
}
}
}
}
dfs
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
static int N;
static ArrayList<Integer>[] tree ;
static int[] whoIsYourParent, visited;
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
N =sc.nextInt();
whoIsYourParent = new int[N+1]; //인덱스 0 버리기
visited = new int[N+1]; //방문하면 -1로 바꾸기
tree = new ArrayList[N+1];
for(int i=1; i<=N; i++) tree[i] = new ArrayList<>();
for(int i=0; i<N-1; i++) {
int a = sc.nextInt();
int b = sc.nextInt();
tree[a].add(b);
tree[b].add(a);
} //입력 받
//tree 입력 받은 거 확인
// for(int i=1; i<N+1; i++) {
// System.out.println(tree[i]);
// }
visited[index] = -1;
dfs(1);
//드디어 부모 출력
for(int i=2; i<=N; i++) {
System.out.println(whoIsYourParent[i]);
}
} // main 끝
private static void dfs(int index) {
for(int i: tree[index]) {
if ( visited[i]==0 ) {
visited[i] = -1;
whoIsYourParent[i] = index;
dfs(i);
}
}
}
}
이슈:
시간이 매우 오래 걸림 (java 언어 특성 상 어쩔 수 없는 거 같은)
해결:
위의 코드에서 사용하지는 않았지만, BufferedReader, StringBuilder 등을 대신 사용하기