본문 바로가기

백준/그래프

트리의 부모찾기

728x90

www.acmicpc.net/problem/11725

 

11725번: 트리의 부모 찾기

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

www.acmicpc.net

#include <iostream>
#include <vector>

using namespace std;



bool findNoMore(int num, vector<vector<int>>&v, vector<int>&parent) {

	


	for (int i = 0; i < v[num].size(); i++ ) {
		
		if (parent[v[num][i]] ==0) {
			
			return false;
		
		}
	}
	return true;

}



void dfs(vector<int>&parent, vector<vector<int>>&v,int num) {


	if (findNoMore(num,v,parent)) {
		
		return;
		
	}


	for (int i = 0; i < v[num].size(); i++) {
		
		if (parent[v[num][i]] == 0) {
			parent[v[num][i]] = num;
			dfs(parent, v, v[num][i]);
		}
	}

	return;

}



int main() {
	

	ios_base::sync_with_stdio(0);

	cin.tie(0); //cin 속도 향상 위해

	int n;

	cin >> n;

	vector<vector<int>>v(n+1);
	vector<int>parent(n + 1,0);

	int a, b;

	parent[1] = -1;
	parent[0] = -1;

	for (int i = 0; i < n-1; i++) {
	
		cin >> a;
		cin >> b;

		v[a].push_back(b);
		v[b].push_back(a);
	
	}

	dfs(parent,v,1);

	for (int i = 2; i <= n; i++) {
		cout << parent[i] << '\n';
	}



}

'백준 > 그래프' 카테고리의 다른 글

최단경로 -1753번  (0) 2021.08.25
이진검색트리 - 5639번 (java)  (0) 2021.08.11
키 순서 / 플로이드 와샬  (0) 2021.04.24