BFS / DFS 문제라고 생각은 했는데,
단계별로 풀어보기의 트리 카테고리 첫 문제라 '직접 구현해보는 건가?'라고 생각해서 시간만 날려먹었다.
#include <iostream>
#include <queue>
#include <vector>
std::vector<int> graph[100001];
int answer[100001];
void bfs(){
std::queue<int> trace;
trace.push(1);
bool visited[100001] = {false, };
visited[1] = true;
while(!trace.empty()){
int cur = trace.front();
trace.pop();
for(int i : graph[cur]){
if(!visited[i]){
answer[i] = cur;
visited[i] = true;
trace.push(i);
}
}
}
}
int main() {
int n = 0;
std::cin >> n;
for(int i = 0; i < n - 1; i++){
int v1 = 0, v2 = 0;
std::cin >> v1 >> v2;
graph[v1].push_back(v2);
graph[v2].push_back(v1);
}
bfs();
for(int i = 2; i < n + 1; i++){
std::cout << answer[i] << "\n";
}
return 0;
}
'PS > BOJ' 카테고리의 다른 글
BOJ 1865 : 웜홀 [C++] (0) | 2022.11.11 |
---|---|
BOJ 1238 : 파티 [C++] (0) | 2022.11.10 |
BOJ 1167 : 트리의 지름 [C++] (0) | 2022.11.03 |
BOJ 1043 : 거짓말 [C++] (0) | 2022.10.31 |
BOJ 17626 : Four Squares [C++] (0) | 2022.10.27 |