![[백준 C++] 11724 : 연결 요소의 개수](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOBczF%2FbtsKZbBliGG%2F4caFGfWTKBB59M407Ckm0K%2Fimg.png)
[백준 C++] 11724 : 연결 요소의 개수CSE/코딩 문제풀이2024. 11. 27. 13:45
Table of Contents
https://www.acmicpc.net/problem/11724
BFS, DFS 전부 다 상관없지만, 필자는 BFS를 사용하였다.
연결 요소는 간단하게 말해서 그래프의 개수이다.
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
vector<vector<int>> graph;
vector<bool> visited;
int bfs(int start)
{
if (visited[start])
return 0;
queue<int> que;
que.push(start);
visited[start] = true;
while (!que.empty())
{
int current = que.front();
que.pop();
for (int i = 0; i < graph[current].size(); i++)
{
int next = graph[current].at(i);
if (!visited[next])
{
que.push(next);
visited[next] = true;
}
}
}
return 1;
}
int main()
{
int N, M, ans = 0;
cin >> N >> M;
graph = vector<vector<int>>(N + 1);
visited = vector<bool>(N + 1, false);
for (int i = 0; i < M; i++)
{
int u, v;
cin >> u >> v;
graph[u].push_back(v);
graph[v].push_back(u);
}
for (int i = 1; i <= N; i++)
ans += bfs(i);
cout << ans << endl;
return 0;
}
for문으로 각 정점마다 BFS를 돌려고 시도할 때, 이미 방문한 정점이면 return 0를 하고 방문하지 않았으면 이어져있는 모든 정점들을 방문하게 하였다.
이외의 것들은 기존 BFS랑 똑같다.
'CSE > 코딩 문제풀이' 카테고리의 다른 글
[백준 C++] 4949 : 균형잡힌 세상 (0) | 2024.11.29 |
---|---|
[백준 C++] 7568 : 덩치 (0) | 2024.11.28 |
[백준 C++] 1654 : 랜선 자르기 (0) | 2024.11.26 |
[백준 C++] 10816 : 숫자 카드 2 (0) | 2024.11.24 |
[백준 C++] 2164 : 카드2 (0) | 2024.11.23 |
@NiffJB :: 개발하는 니프
CSE & GAME 개발 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 부탁드립니다!