250x250
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
- IN
- MySQL
- 머신러닝
- TD
- exists
- image processing
- C++
- sklearn
- edge detection
- canny edge detection
- 딥러닝
- Python
- Mask Processing
- 강화학습
- DP
- AlexNet
- MinHeap
- machine learning
- 백준
- clustering
- 그래프 이론
- classification
- BFS
- Reinforcement Learning
- dynamic programming
- 인공지능
- dfs
- opencv
- 자료구조
- SIFT
Archives
- Today
- Total
JINWOOJUNG
[ 그래프 이론 - 24444 ] 알고리즘 수업 - 너비 우선 탐색 1 본문
728x90
반응형
접근법
Sudo Code 기반으로 작성하면 쉽게 해결 가능하다.
sort()를 이용해서 정렬을 통해 정점 번호를 오름차순으로 방문 하였지만, 추후 다른 정렬 기법 기반으로 정렬을 구현할 필요는 보인다.
정답
#include<iostream>
#include<queue>
#include<vector>
#include <algorithm>
using namespace std;
vector<int32_t> ars32_Graph[100001];
bool arb_Visited[100001] = { false };
int32_t ars32_Result[100001];
void bfs(int32_t s32_R);
int main()
{
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int32_t s32_N, s32_M, s32_R, s32_I;
cin >> s32_N >> s32_M >> s32_R;
for (s32_I = 1; s32_I <= s32_M; s32_I++)
{
int32_t s32_Tmp1, s32_Tmp2;
cin >> s32_Tmp1 >> s32_Tmp2;
ars32_Graph[s32_Tmp1].push_back(s32_Tmp2);
ars32_Graph[s32_Tmp2].push_back(s32_Tmp1);
}
for (s32_I = 1; s32_I <= s32_N; s32_I++)
{
sort(ars32_Graph[s32_I].begin(), ars32_Graph[s32_I].end());
}
bfs(s32_R);
for (s32_I = 1; s32_I <= s32_N; s32_I++)
{
printf("%d\n", ars32_Result[s32_I]);
}
return 0;
}
void bfs(int32_t s32_R)
{
int32_t s32_I, s32_Cnt=1;
queue<int32_t> qs32_Queue;
qs32_Queue.push(s32_R);
ars32_Result[s32_R] = s32_Cnt;
arb_Visited[s32_R] = true;
while (!qs32_Queue.empty())
{
int32_t s32_Node = qs32_Queue.front();
qs32_Queue.pop();
for (s32_I = 0; s32_I < ars32_Graph[s32_Node].size(); s32_I++)
{
if (!arb_Visited[ars32_Graph[s32_Node][s32_I]])
{
s32_Cnt += 1;
ars32_Result[ars32_Graph[s32_Node][s32_I]] = s32_Cnt;
arb_Visited[ars32_Graph[s32_Node][s32_I]] = true;
qs32_Queue.push(ars32_Graph[s32_Node][s32_I]);
}
}
}
}
728x90
반응형
'백준' 카테고리의 다른 글
[ DP - 2839 ] 설탕 배달(C++) (0) | 2024.03.24 |
---|---|
[ 28217 ] 두 정삼각형(C++) (0) | 2024.03.24 |
[ 정렬 - 11399 ] ATM (0) | 2024.03.17 |
[ 그래프 이론 - 9372번 ] 상근이의 여행(C++) (0) | 2024.03.17 |
[ 그래프 이론-11403 ] 경로 찾기(Python) (1) | 2024.01.05 |