#include <iostream>
#include <vector>
#include <queue>
using namespace std;
#define NODE_COUNT 8
#define EDGE_COUNT 18
void BFS(int start, vector<int> v[], int visit[]) {
queue<int> q; // queue 생성
q.push(start); //초기 시작점 저장
//visit[start]++;
visit[start] = 1;
cout << "result:" << " ";
while (!q.empty()) {
// 큐에 값이 있다 => 아직 방문하지 않은 노드가 있다.
int current = q.front();
cout << current << " ";
q.pop();
for (int i = 0; i < v[current].size(); i++) {
int next = v[current][i];
if (!visit[next]) {
visit[next] = 1;
q.push(next);
}
}
}
}
int main()
{
int n = NODE_COUNT, m = EDGE_COUNT; // n 정점 개수 , m 간선 개수
vector<int> v[NODE_COUNT + 1];
int visit[NODE_COUNT + 1] = { 0, };
// 그래프 노드 관계 설정
for (int i = 0; i < m; ++i) {
int a, b;
cin >> a >> b;
v[a].push_back(b);
v[b].push_back(a);
}
cout << "\n";
BFS(1, v, visit);
return 0;
}
1 2
1 3
1 8
2 1
2 7
3 1
3 4
3 5
4 3
4 5
5 3
5 4
6 7
7 2
7 6
7 8
8 1
8 7
'C > Data Structure' 카테고리의 다른 글
DFS 구현 (재귀함수 사용하지 않음) (0) | 2023.10.12 |
---|---|
Count Sort(계수 정렬) (0) | 2021.08.09 |
Quick Sort(퀵 정렬) (0) | 2021.08.04 |
Insertion Sort(삽입 정렬) (0) | 2021.08.02 |
Selection Sort(선택 정렬) (0) | 2021.08.02 |