https://www.acmicpc.net/problem/11725
자료구조(트리), 트리 순회
루트가 1인 트리가 주어지면(트리의 속성 : 정점N개, 간선N-1개), 2번 ~ N번 노드의 부모노드를 출력하는 프로그램을 작성하라
시간복잡도 : O(N)
N은 트리의 정점 개수
점검해봐야할 부분
- 부모를 기억한 채로 순회
- 루트가 주어지면 방향성도 이미 정해진 것
https://github.com/jongwuner/Algorithm/blob/master/BOJ/11725.cpp
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 | #include<iostream> #include<vector> #define MAX 100005 using namespace std; vector<int> adj[MAX]; bool visit[MAX]; int parent[MAX], N, a, b; void go(int idx) { visit[idx] = true; for (int i = 0; i < adj[idx].size(); i++) { int next = adj[idx][i]; if (!visit[next]) { parent[next] = idx; go(next); } } } int main() { scanf("%d", &N); for (int i = 1; i <= N - 1; i++) { scanf("%d %d", &a, &b); adj[a].push_back(b); adj[b].push_back(a); } go(1); for (int i = 2; i <= N; i++) printf("%d\n", parent[i]); return 0; } | cs |
'Coding > Algorithm' 카테고리의 다른 글
BOJ(백준) 1949 - 우수마을 (0) | 2019.01.13 |
---|---|
BOJ(백준) 3482 - Labyrinth (0) | 2019.01.13 |
BOJ(백준) 1068 - 트리 (0) | 2019.01.13 |
BOJ(백준) 4803 - 트리 (0) | 2019.01.13 |
BOJ(백준) 16437 - 양 구출 작전 (0) | 2019.01.12 |