-
[백준] 11725 :: 트리의 부모 찾기알고리즘/BOJ(C++) 2019. 8. 2. 16:02반응형
https://www.acmicpc.net/problem/11725
입력되는 간선정보를 바탕으로 각 노드의 부모를 저장하면 된다.
트리는 항상 n개의 노드가 있을 때 간선이 n-1개이므로 우리는 n-1개의 간선만 입력받아도 트리를 만들 수 있다.
처음에 일차원배열로 풀었다가 틀렸다. 왜냐하면 간선 정보가 depth가 깊어지는 순서대로 입력된다는 보장이 없기 때문이다.
따라서 그래프 입력받듯이 모든 간선 정보를 vector에 저장한 후 한번에 트리를 만들어야 한다.
소스코드
...더보기1234567891011121314151617181920212223242526272829303132333435363738394041424344#include <iostream>#include <queue>#include <vector>using namespace std;#define MAX 100003vector<int> v[MAX];int par[100001];bool visited[MAX];int main() {cin.tie(NULL);int n;cin >> n;par[1] = 1;for (int i = 0; i < n - 1; i++) {int a, b;cin >> a >> b;v[a].push_back(b);v[b].push_back(a);}queue<int> q;par[1] = 1;visited[1] = true;q.push(1);while (!q.empty()) {int now = q.front();q.pop();for (int i = 0; i < v[now].size(); i++) {int next = v[now][i];if (visited[next] == false) {visited[next] = true;par[next] = now;q.push(next);}}}for (int i = 2; i <= n; i++) {cout << par[i] << "\n";}}http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripterhttp://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs반응형'알고리즘 > BOJ(C++)' 카테고리의 다른 글
[백준] 1024 :: 수열의 합 (0) 2020.07.27 [백준] 1052 :: 물병 (0) 2020.07.14 [백준] 2250 :: 트리의 높이와 넓이 (0) 2019.08.02 [백준] 3055 :: 탈출 (0) 2019.08.01 [BOJ] 1202 :: 보석 도둑 (0) 2018.07.24