Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- tflite
- tinyml
- 코딩테스트
- 포스코 ai 교육
- BFS
- 포스코 AI교육
- bfs문제
- dfs문제
- 초소형머신러닝
- 코테
- 삼성역량테스트
- 알고리즘
- 그리디
- 임베디드 딥러닝
- 딥러닝
- dfs
- DP
- 삼성코테
- MCU 딥러닝
- 삼성코딩테스트
- TensorFlow Lite
- 포스코 교육
- 자료구조
- 다이나믹프로그래밍
- 컴퓨팅사고
- sort
- DP문제
- 영상처리
- 코테 문제
- 삼성역테
Archives
- Today
- Total
코딩뚠뚠
[백준문제풀이] 11725 트리의 부모 찾기 본문
반응형
풀이 일시 : 2020-12-27
문제 :
루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오.
입력 :
첫째 줄에 노드의 개수 N (2 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N-1개의 줄에 트리 상에서 연결된 두 정점이 주어진다.
ex)
7
1 6
6 3
3 5
4 1
2 4
4 7
출력 :
첫째 줄부터 N-1개의 줄에 각 노드의 부모 노드 번호를 2번 노드부터 순서대로 출력한다.
ex)
4
6
1
3
1
4
풀이 :
입력이 주어지는 것을 vector에 받아 트리를 구성해준다.
BFS로 모든 노드를 탐색하며 각각 노드마다 자신의 부모를 체크해줄 수 있다.
자신의 부모를 체크했다면 parent 배열에 저장해주고 한번에 출력해주자.
//트리의 부모찾기
//입력에서 두 정점이 연결되었다는것은 하나는 그것의 부모이고 하나는 자식일것이다.
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
const int MAX = 100001;
int N;
vector <int> v[MAX];
int visited[MAX];
int parent[MAX];
void bfs() { //모든 노드를 탐색하며 그때그때 자신의 부모를 체크한다.
queue<int>q;
q.push(1); //1이 루트라고 설정해놓음
visited[1] = 1;
while (!q.empty()) {
int x = q.front();
q.pop();
for (int i = 0; i < v[x].size(); i++) {
int z = v[x][i];
if (!visited[z]) {
parent[z] = x; //check parent
visited[z] = 1;
q.push(z);
}
}
}
}
void printparent() {
for (int i = 2; i <= N; i++) {
cout << parent[i] << '\n';
}
}
int main() {
cin >> N;
int val1,val2;
for (int i = 0; i < N-1; i++) {
cin >> val1>>val2;
v[val1].push_back(val2);
v[val2].push_back(val1);
}
bfs();
printparent();
return 0;
}
참고자료 : vector
[개념정리] vector container
vector 란 C++ STL vector는 list계열의 container 종류이다. 자료구조의 스택과 구조가 비슷하다. vector를 생성하면 메모리 heap에 생성되며 동적할당 된다. vector 사용 선언 및 초기화 vector<자료형> 변수.
dbstndi6316.tistory.com
참고자료 : BFS
[기본문제풀이] BFS 너비우선탐색
풀이 일시 : 2020-08-30 BFS : 탐색 - 하나의 정점으로부터 시작하여 차례대로 모든 정점들을 한번씩 방문하는 것. 그 중 한 방법인 너비우선탐색은 루트 노드에서 시작해서 인접한 노드를 먼저 탐
dbstndi6316.tistory.com
반응형
'알고리즘 문제풀이 > 백준문제풀이' 카테고리의 다른 글
[백준문제풀이] 10844 쉬운 계단 수 (0) | 2021.01.04 |
---|---|
[백준문제풀이] 1167 트리의 지름 (0) | 2021.01.04 |
[백준문제풀이] 1991 트리 순회 (0) | 2021.01.04 |
[백준문제풀이] 2632 피자판매 (0) | 2021.01.04 |
[백준문제풀이] 7453 합이 0인 네 정수 (0) | 2021.01.04 |