[문제보기]

 11725. 트리의 부모 찾기

 

11725번: 트리의 부모 찾기

루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오.

www.acmicpc.net

 

[풀이과정]

vector를 사용하여 입력값을 받아 트리를 형성하였다. 그리고 문제에 트리의 루트가 1이라고 하였으므로

vector의 값들을 확인하면서 부모노드를 찾아주었다.

 

[소스코드]

#include <iostream>
#include <vector>

using namespace std;

int parent[100001] = {0};
bool visit[100001];
vector<int> tree[100001];

void Find_Parent(int node){
    visit[node] = true;

    for(int i=0; i<tree[node].size(); i++){
        int next = tree[node][i];

        if(visit[next] == false){
            parent[next] = node;
            Find_Parent(next);
        }
    }
}

int main(){
    int n;
    cin >> n;

    for(int i=0; i<n-1; i++){
        int x, y;
        cin >> x >> y;
        
        tree[x].push_back(y);
        tree[y].push_back(x);
    }

    Find_Parent(1);

    for(int i=2; i<=n; i++){
        cout << parent[i] << "\n";
    }
}

 

[해결 과정 중 실수한 부분]

처음에는 문제가 이해가 안가서 입력값에 대해 부모 노드를 판별해 주었는데, 백준 사이트의 질문 게시판을 

활용하여 문제를 이해하고 바로 문제를 풀었다.