본문 바로가기
백준

[백준 11725] 트리의 부모 찾기

by 황인태(intaehwang) 2020. 2. 10.
반응형

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

 

11725번: 트리의 부모 찾기

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

www.acmicpc.net

 본 문제는 트리로 연결된 두 정점을 입력으로 들어오면 2번 노드부터 부모 노드를 출력하는 문제다. ( 단, 1을 root로 한다. ) 따라서, 모든 연결 정보를 인접 리스트에 저장하고 root부터 BFS를 이용해 탐색을 하면서 각 노드의 부모 노드를 저장한다. 2번 노드 부터 n까지 반복하면서 부모노드를 출력한다.

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
#include <cstdio>
#include <vector>
#include <queue>
 
using namespace std;
 
vector<int> v[100001];
int d[100001];
bool chk[100001];
int main() {
    int n;
    scanf("%d"&n);
    for (int i = 1; i < n; i++) {
        int x, y;
        scanf("%d %d"&x, &y);
        v[x].push_back(y);
        v[y].push_back(x);
    }
    queue<int> q;
    chk[1= true;
    q.push(1);
    while (!q.empty()) {
        int node = q.front();
        q.pop();
        for (int i = 0; i < v[node].size(); i++) {
            int next = v[node][i];
            if(!chk[next]) {
                chk[next] = true;
                q.push(next);
                d[next] = node;
            }
        }
    }
    for (int i = 2; i <= n; i++) {
        printf("%d\n", d[i]);
    }
}
cs
반응형

'백준' 카테고리의 다른 글

[백준 15486] 퇴사 2, C++  (0) 2020.02.13
[백준 1939] 중량제한, C++  (0) 2020.02.11
[백준 6087] 레이저 통신, C++  (0) 2020.02.07
[백준 1790] 수 이어 쓰기 2, C++  (0) 2020.02.05
[백준 11728] 배열 합치기, C++  (0) 2020.02.05
Buy me a coffeeBuy me a coffee

댓글