https://www.acmicpc.net/problem/11725
11725번: 트리의 부모 찾기
루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오.
www.acmicpc.net
트리를 2차원 vector로 구현하였다. 클래스로 트리를 만드는 것도 고민해봤는데 아직 거기까진 구현을 안해봐서 간단히 벡터로 구현하기로..
문제에 주어지는 노드의 관계는 순서 상관없이 무작위로 주어진다. << 이거 때문에 어떻게 할까 고민하다가 다른 분의 코드를 참고했다.
#include <iostream>
#include <string>
#include <vector>
using namespace std;
bool visited[100001];
int result[100001];
vector<vector<int>> tr;
void parents(int v) {
visited[v] = 1;
int next;
for (int i = 0; i < tr[v].size(); i++) {
next = tr[v][i];
if (visited[next] == 1) continue;
result[next] = v;
parents(next);
}
}
int main() {
int n, x, y;
cin >> n;
tr.resize(n + 1);
for (int i = 0; i < n - 1; i++) {
cin >> x >> y;
tr[x].push_back(y);
tr[y].push_back(x);
}
parents(1);
for (int i = 2; i <= n; i++) {
cout << result[i] << '\n';
}
}
'Study > 백준' 카테고리의 다른 글
[백준] 1932번: 정수 삼각형 (C++) | Dynamic Programming (0) | 2022.07.04 |
---|---|
[백준] 17087번: 숨바꼭질 6 (C++) (0) | 2022.07.02 |
[백준] 1676번: 팩토리얼 0의 개수 (0) | 2022.03.30 |
[백준] 1158번: 요세푸스 문제 (0) | 2022.03.29 |
[백준] 2004번: 조합 0의 개수 (0) | 2022.03.29 |