백준 11403 경로찾기 C++
- 문제
BFS 자료구조 정리
BFS를 정리하며 간단한 그래프 이론 문제를 하나 풀어보았다.
- 문제 풀이
- 여러 문제들에서 BFS(Breadth First Search)를 구현할 때 모양은 거의 같다. 방문 여부를 확인하는 visited 배열, 탐색할 노드를 저장하는 queue를 사용하며, 문제마다 그래프의 범위, 가중치 등등 필요한 요소들을 추가해주면된다. 오늘 풀이할 문제는 가중치가 없는 그래프이며 bfs를 활용할 수 있는 가장 기본적인 문제라고 생각한다.
- 코드
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
vector<int>* graph;
int N, input;
void bfs(int start){
queue<int> que;
que.push(start);
int visited[101] = {0, };
while(!que.empty()){
int current = que.front();
que.pop();
for(int i = 0; i < graph[current].size(); i++){
int next = graph[current][i];
if(!visited[next]){
que.push(next);
visited[next] = 1;
}
}
}
for(int i = 1; i <= N; i++){
cout << visited[i] << " ";
}
cout << endl;
}
int main() {
ios_base::sync_with_stdio(0);cin.tie(0);
cin >> N;
graph = new vector<int>[N+1];
for(int i = 1; i <= N; i++){
for(int j = 1; j <= N; j++){
cin >> input;
if(input){
graph[i].push_back(j);
}
}
}
for(int i = 1; i <= N; i++){
bfs(i);
}
return 0;
}
Author And Source
이 문제에 관하여(백준 11403 경로찾기 C++), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@rlarleo/백준-11403-경로찾기-C저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)