728x90
BFS로 순회하면서 풀었다. 벡터 배열을 static으로 선언한 이유는 배열의 크기가 너무 커서 비주얼 스튜디오에서 돌리면 자꾸 런타임에러가 나면서 종료되어서 static으로 선언해서 힙에 할당하도록 해줬다.
제출할 때는 static 빼도 정답으로 나왔다.
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
int main() {
cin.tie(NULL);
ios::sync_with_stdio(false);
int n;
cin >> n;
static vector<int> graph[100001];
int from, to;
for (int i = 0; i < n - 1; i++) {
cin >> from >> to;
graph[from].push_back(to);
graph[to].push_back(from);
}
vector<bool> visited(n + 1, false);
vector<int> parent(n + 1, -1);
queue<int> q;
q.push(1);
parent[1] = 1;
while (!q.empty()) {
int cur = q.front();
q.pop();
if (!visited[cur]) {
visited[cur] = true;
for (int i = 0; i < graph[cur].size(); i++) {
if (parent[graph[cur][i]] == -1) {
parent[graph[cur][i]] = cur;
q.push(graph[cur][i]);
}
}
}
}
for (int i = 2; i <= n; i++) {
cout << parent[i] << '\n';
}
return 0;
}
728x90
'알고리즘 문제' 카테고리의 다른 글
[백준] 14226번 이모티콘 (0) | 2021.01.17 |
---|---|
[백준] 1963번 소수 경로 (0) | 2021.01.15 |
[백준] 2960번 에라토스테네스의 체 (0) | 2021.01.14 |
[백준] 1890번 점프 (0) | 2021.01.13 |
[백준] 1676번 팩토리얼 0의 개수 (0) | 2021.01.13 |