할껀하고놀자

[알고리즘] 간단한 bfs 구현 (C++) 본문

[IT]/알고리즘

[알고리즘] 간단한 bfs 구현 (C++)

working_hard 2019. 5. 31. 16:14
728x90
#include<iostream>
#include<queue>
#include<vector>

using namespace std;

int number = 7;
int c[7];
vector<int> a[8];

void bfs(int start) {
	queue<int> q;
	q.push(start);	// 첫번째꺼 넣어주고
	c[start] = true;	// 방문처리 해주기.
	while (!q.empty()) {	// 큐가 빌때가지 돌려주기.
		int x = q.front();	// 하나 뽑아준다.
		q.pop();
		cout << x<<" ";
		// 인접한 노드를 한번씩 방문해주기.
		for (int i = 0; i < a[x].size(); i++)
		{
			// 순회하면서
			int y = a[x][i];
			// 방문하지 않은 노드가 있다면
			if (!c[y]) {
				q.push(y);	// 큐에 넣어주고
				c[y] = true;	// 방문했다고 처리해준다.
			}
		}
	}
}

int main() {
	// 1 2
	a[1].push_back(2);
	a[2].push_back(1);
	// 1 3
	a[1].push_back(3);
	a[3].push_back(1);
	// 2 3
	a[2].push_back(3);
	a[3].push_back(2);
	// 2 4
	a[2].push_back(4);
	a[4].push_back(2);
	// 2 5
	a[2].push_back(5);
	a[5].push_back(2);
	// 3 6
	a[3].push_back(6);
	a[6].push_back(3);
	// 3 7
	a[3].push_back(7);
	a[7].push_back(3);
	// 4 5
	a[4].push_back(5);
	a[5].push_back(4);
	// 6 7
	a[6].push_back(7);
	a[7].push_back(6);

	bfs(1);

	return 0;
}
Comments