728x90
반응형
BFS는 너비 우선 탐색으로 가까운 노드부터 탐색하는 알고리즘이다.
자 또 그림을 한번 보자.

DFS 할 때와 같은 그래프이다. 위 그림과 같이 BFS 는 큐를 사용하고 방문 후 숫자를 큐에 저장한다. 그 후 enqueue 된 숫자가 dequeue 되면서 연결된 다음 숫자를 enqueue 해준다.
아래는 코드이다.
#include <stdio.h>
#include <queue>
#include<vector>
using namespace std;
bool visited[9];
vector<int> graph[9];
void BFS(int start) {
queue<int> q;
q.push(start);
visited[start] = true;
while (!q.empty()) {
int x = q.front();
q.pop();
printf("%d ", x);
for (int i = 0; i < graph[x].size(); i++) {
int y = graph[x][i];
if (!visited[y]) {
q.push(y);
visited[y] = true;
}
}
}
}
int main() {
graph[1].push_back(2);
graph[1].push_back(6);
graph[1].push_back(7);
graph[2].push_back(1);
graph[2].push_back(8);
graph[3].push_back(8);
graph[4].push_back(8);
graph[5].push_back(6);
graph[5].push_back(7);
graph[6].push_back(1);
graph[6].push_back(5);
graph[7].push_back(5);
graph[7].push_back(1);
graph[8].push_back(3);
graph[8].push_back(4);
BFS(1);
}
728x90
반응형