-
11725번 트리의 부모 찾기 | BFS, DFS | Baekjoon BOJ 백준 11725 C++ 코드, 해설, 풀이[백준 알고리즘]/[C++] 2021. 2. 9. 19:31728x90반응형
이번 포스팅은 백준 11725번 트리의 부모 찾기입니다.
아래 url를 클릭하시면 백준 사이트에서 문제를 볼 수 있습니다.
기본 알고리즘
BFS 너비 우선 탐색
DFS 깊이 우선 탐색
더보기답안 출력 시 (line 48)
cout << parent[i] << endl; //시간 초과
printf("%d\n", parent[i]); //해결
전체 코드
BFS 너비 우선 탐색
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950//백준11725 트리의부모찾기#include <iostream>#include <vector>#include <queue>using namespace std;int n;const int MAX = 100001;vector<int> map[MAX];bool visited[MAX];int parent[MAX];queue<int> q;void BFS(int v) {visited[v] = true;q.push(v);while (!q.empty()) {v = q.front();q.pop();for (vector<int>::iterator iter = map[v].begin(); iter != map[v].end(); ++iter){int w = *iter;if (visited[w] == 0) {parent[w] = v;visited[w] = true;q.push(w);}}}}int main() {cin >> n;for (int i = 0; i < n - 1; i++) {int x, y;cin >> x >> y;map[x].push_back(y);map[y].push_back(x);}BFS(1);for (int i = 2; i <= n; i++) {printf("%d\n", parent[i]);}}cs DFS 깊이 우선 탐색
12345678910111213141516171819202122232425262728293031323334353637383940//백준11725 트리의부모찾기#include <iostream>#include <vector>using namespace std;int n;const int MAX = 100001;vector<int> map[MAX];bool visited[MAX];int parent[MAX];void DFS(int v) {visited[v] = true;for (vector<int>::iterator iter = map[v].begin(); iter != map[v].end(); ++iter) {int w = *iter;if (visited[w] == 0) {parent[w] = v;DFS(w);}}}int main() {cin >> n;for (int i = 0; i < n - 1; i++) {int x, y;cin >> x >> y;map[x].push_back(y);map[y].push_back(x);}DFS(1);for (int i = 2; i <= n; i++) {printf("%d\n", parent[i]);}}cs 728x90반응형'[백준 알고리즘] > [C++]' 카테고리의 다른 글
1926번 그림 | BFS, DFS | Baekjoon BOJ 백준 1926 C++ 코드 (0) 2021.02.11 11050번 이항 계수 1 | Baekjoon BOJ 백준 11050 C++ 코드, 해설, 풀이 (0) 2021.02.09 2644번 촌수계산 | BFS | Baekjoon BOJ 백준 2644 C++ 코드, 해설, 풀이 (0) 2021.02.09 7562번 나이트의 이동 | BFS | Baekjoon BOJ 백준 7562 C++ 코드, 해설, 풀이 (1) 2021.02.03 7576번 토마토 | BFS | Baekjoon BOJ 백준 7576 C++ 코드, 해설, 풀이 (1) 2021.02.02