티스토리 뷰

https://www.acmicpc.net/problem/3584

 

3584번: 가장 가까운 공통 조상

루트가 있는 트리(rooted tree)가 주어지고, 그 트리 상의 두 정점이 주어질 때 그들의 가장 가까운 공통 조상(Nearest Common Anscestor)은 다음과 같이 정의됩니다. 두 노드의 가장 가까운 공통 조상은, 두

www.acmicpc.net

 

#include <iostream>
#include <stdio.h>
#include <vector>
using namespace std;

void find_parent(int arr[], int n, vector<int> &v)
{
    if (arr[n] == n)
    {
        return;
    }
    else
    {
        v.push_back(arr[n]);
        find_parent(arr, arr[n], v);
    }
}

int main()
{
    int t, n, a, b;
    vector<int> results;
    scanf("%d", &t);

    //test case
    for (int i = 0; i < t; i++)
    {
        scanf("%d", &n);

        //edge
        int arr[10020] = {0};
        for (int j = 1; j <= n - 1; j++)
        {
            arr[j] = j;
        }
        for (int j = 1; j <= n - 1; j++)
        {
            scanf("%d %d", &a, &b);
            arr[b] = a;
        }
        scanf("%d %d", &a, &b);

        vector<int> v1;
        v1.push_back(a);
        find_parent(arr, a, v1);

        vector<int> v2;
        v2.push_back(b);
        find_parent(arr, b, v2);

        int short_vector_size;
        if (v1.size() < v2.size())
        {
            short_vector_size = v1.size();
        }
        else
        {
            short_vector_size = v2.size();
        }

        int result;
        for (int j = 0; j < short_vector_size; j++)
        {
            if (v1[v1.size() - 1 - j] == v2[v2.size() - 1 - j])
            {
                result = v1[v1.size() - 1 - j];
            }
            else
            {
                break;
            }
        }

        results.push_back(result);
    }

    for (int i = 0; i < results.size(); i++)
    {
        cout << results[i] << endl;
    }
}

 

'알고리즘 > [문제풀이] BOJ' 카테고리의 다른 글

[BOJ] 10804 - 나이순 정렬  (0) 2021.10.02
[BOJ] 1717 - 집합의 표현  (0) 2021.10.02
[BOJ] 11005 - 진법 변환 2  (0) 2021.09.30
[BOJ] 21609 - 상어 중학교  (0) 2021.09.29
[BOJ] 21608 - 상어 초등학교  (0) 2021.09.26
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
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
글 보관함