20251123 baekjoon
This commit is contained in:
parent
19013cb1f5
commit
defda6b1d1
54
code_study/Baekjoon/java/_15681.java
Normal file
54
code_study/Baekjoon/java/_15681.java
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
class Tree {
|
||||||
|
private int root;
|
||||||
|
private ArrayList<Integer>[] edges;
|
||||||
|
private int[] subTreeSizes;
|
||||||
|
private boolean[] visited;
|
||||||
|
|
||||||
|
public Tree(int root, int treeSize) {
|
||||||
|
this.root = root;
|
||||||
|
this.subTreeSizes = new int[treeSize+1];
|
||||||
|
this.visited = new boolean[treeSize+1];
|
||||||
|
|
||||||
|
this.edges = new ArrayList[treeSize + 1];
|
||||||
|
for(int i=0; i<=treeSize; i++) this.edges[i] = new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addEdge(int u, int v) {
|
||||||
|
this.edges[u].add(v);
|
||||||
|
this.edges[v].add(u);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void printSubTreeSize(int node) {
|
||||||
|
System.out.println(this.subTreeSizes[node]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void countSubTreeSizes() {
|
||||||
|
this.dfs(root);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void dfs(int current) {
|
||||||
|
this.visited[current] = true;
|
||||||
|
this.subTreeSizes[current] = 1;
|
||||||
|
|
||||||
|
for (int next : this.edges[current]) {
|
||||||
|
if(!this.visited[next]) {
|
||||||
|
dfs(next);
|
||||||
|
this.subTreeSizes[current] += this.subTreeSizes[next];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class _15681 {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Scanner sc = new Scanner(System.in);
|
||||||
|
int N = sc.nextInt(), R = sc.nextInt(), Q = sc.nextInt();
|
||||||
|
Tree tree = new Tree(R, N);
|
||||||
|
for(int i=0; i<N-1; i++) tree.addEdge(sc.nextInt(), sc.nextInt());
|
||||||
|
tree.countSubTreeSizes();
|
||||||
|
for(int i=0; i<Q; i++) tree.printSubTreeSize(sc.nextInt());
|
||||||
|
sc.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user