Algorithm/graph

[백준] 알고리즘 11725번 - 트리의 부모 찾기 문제

낭강 2021. 2. 4. 21:47
트리의 부모 찾기 문제

소스코드
#include <bits/stdc++.h>
using namespace std;
vector<int> v[100001];
bool check[100001];
int p[100001];
void dfs(int x) {
	check[x] = true;
	int size = v[x].size();
	for (int i = 0; i < size; i++) {
		if (check[v[x][i]] == false) {
			p[v[x][i]] = x;
			dfs(v[x][i]);
		}
	}
}
int main(){
   ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
   int n;
   cin >> n;
   for (int i = 1; i < n; i++) {
	   int x, y;
	   cin >> x >> y;
	   v[x].push_back(y);
	   v[y].push_back(x);
   }
   dfs(1);
   for (int i = 2; i <= n; i++) {
	   cout << p[i] << "\n";
   }
}

 

해결방법

트리는 한 정점을 방문하면 모든 정점을 조사할 수 있다.

2번 노드의 부모를 차례로 출력하기 위해서 P배열에 저장후 출력해주면된다.