728x90

www.acmicpc.net/problem/11725

 

11725번: 트리의 부모 찾기

루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오.

www.acmicpc.net

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

+ Recent posts