728x90
    
    
  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 | 
