#include <iostream>
#include <vector>
#include <queue>
using namespace std;
vector<vector<int>> adjMatrix = {
{0,1,1,1,0,0,0,0,0},
{1,0,0,0,0,0,0,0,0},
{1,0,0,0,0,0,0,0,0},
{1,0,0,0,1,0,0,0,0},
{0,0,0,1,0,0,0,0,0},
{0,0,0,0,0,0,1,1,0},
{0,0,0,0,0,1,0,1,1},
{0,0,0,0,0,1,1,0,0},
{0,0,0,0,0,0,1,0,0},
};
vector<bool> visited(adjMatrix.size(), false);
queue<int> que;
void bfs(int cur) {
que.push(cur);
visited[cur] = true;
while (que.size() != 0) {
int cur = que.front();
que.pop();
for (int i = 0;i<adjMatrix.size(); i++) {
if (adjMatrix[cur][i] == 1 && !visited[i]) {
que.push(i);
visited[i] = true;
}
}
cout << "visit : " << cur << endl;
}
}
void bfsAll() {
for (int i = 0; i < visited.size(); i++) {
if (!visited[i]) bfs(i);
}
}
int main() {
bfs(0);
bfsAll();
return 0;
}