#include <iostream>
#include <vector>
#include <queue>
 
std::vector<int> vec[100001] = {};
int iAns[100001] = {};
 
int main()
{
	int N = 0;
	std::cin >> N;
 
	for (int i = 0; i < N - 1; ++i)
	{
		int iFirst = 0;
		int iSecond = 0;
		std::cin >> iFirst >> iSecond;
 
		vec[iFirst].push_back(iSecond);
		vec[iSecond].push_back(iFirst);
	}
 
	std::queue<int> que = {};
	que.push(1);
 
	while (!que.empty())
	{
		int iFront = que.front();
		que.pop();
 
		for (int j = 0; j < vec[iFront].size(); ++j)
		{
			if (!iAns[vec[iFront][j]])
			{
				iAns[vec[iFront][j]] = iFront;
				que.push(vec[iFront][j]);
			}
		}
	}
 
	for (int i = 2; i <= N; ++i)
	{
		std::cout << iAns[i] << "\n";
	}
 
	return 0;
}
 

부모는 무조건 하나이기 때문에 이렇게 만들었습니다.

두개 입력받을 때 어떤게 부모인지 알 수 없기 때문에

두개 다 입력하고 루트(1)로부터 시작하면서 입력합니다.

이 때, 먼저 입력이 되었다면 부모가 있는 것이기에 넘어가는 걸로 했습니다.

+ Recent posts