자료구조
C++) BFS 기본형
HSH12345
2024. 1. 14. 23:19
#include <iostream>
#include <cstring>
#include <queue>
using namespace std;
#define MAX_N 10
int nodeNum;
int edgeNum;
int arrGraph[MAX_N][MAX_N];
int main()
{
cin >> nodeNum >> edgeNum;
memset(arrGraph, 0, sizeof(arrGraph));
for (int i = 0; i < edgeNum; i++)
{
int u;
int v;
cin >> u >> v;
arrGraph[u][v] = arrGraph[v][u] = 1;
}
BFS(0);
}
void BFS(int firstNodeNum)
{
bool arrIsVisited[MAX_N] = { false };
queue<int> qBFS;
arrIsVisited[firstNodeNum] = true;
qBFS.push(firstNodeNum);
while (!qBFS.empty())
{
int currentNodeNum = qBFS.front();
qBFS.pop();
cout << currentNodeNum << " ";
for (int nextNodeNum = 1; nextNodeNum < nodeNum; nextNodeNum++)
{
if (!arrIsVisited[nextNodeNum] && arrGraph[currentNodeNum][nextNodeNum])
{
arrIsVisited[nextNodeNum] = true;
qBFS.push(nextNodeNum);
}
}
}
}