어흥
[백준 11725] 트리의 부모 찾기 (C++) 본문
728x90
반응형
문제 링크: https://www.acmicpc.net/problem/11725
1. 주의할 점
- Node의 최대가 10만개다 -> Vector를 사용한다
- Root Node는 1이다
2. 구현
- BFS를 통해 구한다
- Queue에 1을 넣고 시작한다
- Queue에서 Pop한 원소에 맞닿아있는 다른 Node들이 방문하지 않은 상태라면 해당 Node들의 부모를 현재 Pop한 Node로 설정한 후, 큐에 추가한다
- 위의 과정을 모든 Node에 방문할 때 까지 진행한다.
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
vector<int> v[100001];
int parent[100001];
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int node, s, e;
cin >> node;
for (int i = 0; i < node - 1; i++) {
cin >> s >> e;
v[s].push_back(e);
v[e].push_back(s);
}
for (int i = 1; i <= node; i++)
parent[i] = -1;
queue<int> q;
q.push(1);
parent[1] = 1;
while (!q.empty()) {
int cidx = q.front();
q.pop();
for (int i = 0; i < v[cidx].size(); i++) {
int next = v[cidx][i];
if (parent[next] == -1) {
parent[next] = cidx;
q.push(next);
}
}
}
for (int i = 2; i <= node; i++)
cout << parent[i] << '\n';
system("pause");
return 0;
}
728x90
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준 17404] RBG거리 2 (C++) (0) | 2020.03.25 |
---|---|
[백준 5213] 과외맨 (C++) (0) | 2020.03.24 |
[백준 15644] 구슬 탈출 3 (C++) (0) | 2020.03.23 |
[백준 15653] 구슬 탈출 4 (C++) (0) | 2020.03.23 |
[백준 2011] 암호코드 (C++) (0) | 2020.03.23 |
Comments