백준 11725번 : 트리의 부모 찾기 / C++

2023. 3. 27. 17:51개인공부/코딩테스트

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

 

11725번: 트리의 부모 찾기

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

www.acmicpc.net

 

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
vector<int> vec[100001];
int N;
int ans[100001]{};
bool visited[100001]{};
queue<int> Q;
 
void BFS()
{
    Q.push(1);
    visited[1= true;
    while (!Q.empty())
    {
        int index = Q.front();
        for(int i=0; i<vec[index].size(); ++i){
            if (visited[vec[index][i]] == false){
                visited[vec[index][i]] = true;
                ans[vec[index][i]] = index;
                Q.push(vec[index][i]);
            }
        }
        Q.pop();
    }
}
 
int main()
{
    cin.tie(NULL);
    cout.tie(NULL);
    ios::sync_with_stdio(false);
    cin >> N;
    for (int i = 0; i < N - 1++i){
        int num1, num2;
        cin >> num1 >> num2;
        vec[num1].push_back(num2);
        vec[num2].push_back(num1);
    }
    BFS();
    for (int i = 2; i <= N; ++i) {
        cout << ans[i] << '\n';
    }
}
cs