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 | 31 |
Tags
- C 언어 코딩 도장
- JSON
- Algorithm
- datastructure
- s
- 이스케이프 문자
- 혼자 공부하는 C언어
- C programming
- coding test
- 알기쉬운 알고리즘
- 윤성우 열혈자료구조
- Stack
- 메모리구조
- list 컬렉션
- insertion sort
- Serialization
- Selection Sorting
- R
- Graph
- 윤성우의 열혈 자료구조
- buffer
- stream
- 이것이 자바다
Archives
- Today
- Total
Engineering Note
69. 이진트리 넓이우선 탐색(BFS):큐 자료구조 직접 구현 본문
Problem Solving/Olympiad in Informatics
69. 이진트리 넓이우선 탐색(BFS):큐 자료구조 직접 구현
Software Engineer Kim 2021. 5. 19. 14:51it 취업을 위한 알고리즘 문제 풀이
문제
코드
//69. 이진트리 넓이우선 탐색(BFS)
#include<stdio.h>
#include<vector>
using namespace std;
int main() {
freopen("input.txt", "rt", stdin);
int Q[10] = {0}, visited[10] = { false, };
int front=-1, rear=-1, x, a, b,firstX = 1;
vector<int> map[10];
for (int i = 0; i < 6; ++i) {
scanf("%d %d", &a, &b);
map[a].push_back(b);
map[b].push_back(a);
}
Q[++rear] = firstX;
visited[firstX] = true;
while (front < rear) {
x = Q[++front];
printf("%d ", x);
for (int i = 0; i < map[x].size(); ++i) {
if (visited[map[x][i]] == false) {
Q[++rear] = map[x][i];
visited[map[x][i]] = true;
}
}
}
return 0;
}
문제해결방법
- 입력된 트리 정보를 연결리스트 방식으로 저장한다.
- 저장된 트리를 큐자료구조를 이용해 BFS 탐색한다.
'Problem Solving > Olympiad in Informatics' 카테고리의 다른 글
67. 최소비용(DFS : 인접행렬) (0) | 2021.05.19 |
---|---|
64. 경로 탐색(DFS):인접행렬 (0) | 2021.05.19 |
66. 경로 탐색(DFS : 인접리스트 방법) (0) | 2021.05.19 |
70. 그래프 최단거리(BFS) (0) | 2021.05.19 |
65. 미로탐색(DFS) (0) | 2021.05.04 |
Comments