자료구조

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);
			}
		}
	}
}