작성한 코드는 다음과 같다.
#include <iostream>
#include <vector>
#include <string.h>
#include <queue>
#include <algorithm>
using namespace std;
vector<int> vec[101];
vector<int> result_bfs;
bool visit[101];
void bfs(int temp){
queue<int> q;
q.push(temp);
visit[temp] = true;
while(!q.empty()){
int x = q.front();
q.pop();
result_bfs.push_back(x);
for (int i = 0; i < vec[x].size(); i++){
if(!visit[vec[x][i]]){ //방문하지 않은 곳만 탐색
q.push(vec[x][i]);
visit[vec[x][i]] = true;
}
}
}
}
int main(){
int n, m, a, b;
cin >> n;
cin >> m;
for (int i=1; i<=m; i++){
cin >> a >> b;
vec[a].push_back(b); //양방향 간선처리
vec[b].push_back(a); //양방향 간선처리
}
bfs(1);
cout << result_bfs.size()-1;
return 0;
}
1번 정점부터 시작해 1번과 연결된 모든 정점의 개수를 구하는 문제였다.
따라서 그냥 bfs 알고리즘을 통해 탐색하며 거치는 모든 정점의 개수를 count하면 되는 문제였다.
'백준' 카테고리의 다른 글
백준 5073 삼각형과 세 변, c++ (0) | 2024.02.26 |
---|---|
백준 2178 미로 탐색, c++ (0) | 2024.02.25 |
백준 2644 촌수계산, c++ (0) | 2024.02.23 |
백준 16967 배열 복원하기, c++ (0) | 2024.02.22 |
백준 5054 주차의 신, c++ (0) | 2024.02.22 |