queue, O(V+E), vector
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
bool isVisited[9];
vector<int> graph[9];
int bfs(int start) {
queue<int> q;
q.push(start);
isVisited[start] = true;
while (!q.empty()) {
int a = q.front();
q.pop();
cout << a << ' ';
for (int i = 0; i < graph[a].size(); i++) {
int b = graph[a][i];
if (!isVisited[b]) {
q.push(b);
isVisited[b] = true;
}
}
}
}
int main() {
// Connect 1 and 2
graph[1].push_back(2);
graph[2].push_back(1);
// Connect 1 and 3
graph[1].push_back(3);
graph[3].push_back(1);
// Connect 2 and 4
graph[2].push_back(4);
graph[4].push_back(2);
// Connect 2 and 5
graph[2].push_back(5);
graph[5].push_back(2);
// Connect 4 and 8
graph[4].push_back(8);
graph[8].push_back(4);
// Connect 5 and 9
graph[5].push_back(9);
graph[9].push_back(5);
// Connect 3 and 6
graph[3].push_back(6);
graph[6].push_back(3);
// Connect 3 and 7
graph[3].push_back(7);
graph[7].push_back(3);
bfs(1);
return 0;
}
References
:https://hongku.tistory.com/156
:https://m42-orion.tistory.com/64
:Elmo image