문제
https://www.acmicpc.net/problem/11725
걸린 시간
-
풀이
C++
#include <bits/stdc++.h>
#define INF 1e9
#define all(c) c.begin(), c.end()
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
int n;
vector<int> visited, ans;
vector<vector<int>> adj;
void solve(int c){
for(int i = 0; i < adj[c].size(); i++){
int n = adj[c][i];
if(!visited[n]){
visited[n] = 1;
ans[n] = c;
solve(n);
}
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cin >> n;
visited.resize(n+1, 0);
ans.resize(n+1);
adj.resize(n+1);
int v, u;
for(int i = 0; i < n-1; i++){
cin >> v >> u;
adj[v].push_back(u);
adj[u].push_back(v);
}
visited[1] = 1;
solve(1);
for(int i = 2; i <= n; i++){
cout << ans[i] << "\n";
}
return 0;
}
트리는 어떤 노드를 기준으로 들어올려도 트리의 형태가 유지된다.
문제에서는 1번 노드를 루트로 할 때 각 노드의 부모 노드를 구하라고 하였으므로, 1번 노드부터 시작하여 모든 노드를 한번씩 확인해주면 된다.
재귀 dfs 를 이용해 풀이하였다.
'Baekjoon' 카테고리의 다른 글
Baekjoon 2480번 주사위 세개 (0) | 2022.03.03 |
---|---|
Baekjoon 3221번 개미의 이동 (0) | 2021.09.30 |
Baekjoon 13549번 숨바꼭질 3 (0) | 2021.09.12 |
Baekjoon 1411번 비슷한 단어 (0) | 2021.07.26 |
Baekjoon 2615번 오목 (0) | 2021.05.16 |
댓글