Baekjoon
[C/C++] 백준 3584번 - 가장 가까운 공통 조상
Study with Me!
2023. 8. 21. 16:14
3584번: 가장 가까운 공통 조상
루트가 있는 트리(rooted tree)가 주어지고, 그 트리 상의 두 정점이 주어질 때 그들의 가장 가까운 공통 조상(Nearest Common Anscestor)은 다음과 같이 정의됩니다. 두 노드의 가장 가까운 공통 조상은, 두
www.acmicpc.net
#include <iostream>
using namespace std;
#define endl '\n'
#define SIZE 10001
int T, N;
int parent[SIZE];
bool visited[SIZE];
void initInput() {
cin >> T;
}
void solve() {
while (T--) {
int u, v;
cin >> N;
for (int i = 1; i <= N; i++) {
visited[i] = 0;
parent[i] = i;
}
for (int i = 0; i < N - 1; i++) {
cin >> u >> v;
parent[v] = u;
}
cin >> u >> v;
visited[u] = 1;
while (u != parent[u]) {
u = parent[u];
visited[u] = 1;
}
while (1) {
if (visited[v]) {
cout << v << endl;
break;
}
v = parent[v];
}
}
}
int main(void) {
cout.tie(NULL); cin.tie(NULL); ios_base::sync_with_stdio(false);
initInput();
solve();
return 0;
}