알고리즘 문제/백준

11724 연결 요소의 개수(BFS)

우대비 2023. 3. 14. 12:02
반응형
 

로그인

 

www.acmicpc.net

해결 방법:

  • 방향 없는 그래프를 인접 리스트로 표현합니다.
  • 그래프의 모든 정점에 대해 BFS 탐색을 수행합니다.
  • BFS 탐색을 수행하면서 방문한 정점들을 모두 체크합니다. 이 과정에서 연결된 모든 정점들은 같은 연결 요소에 속하므로, 탐색이 끝나면 연결 요소의 개수를 증가시킵니다.
  • 탐색이 끝난 후, 연결 요소의 개수를 출력합니다.
#include <iostream>
#include <vector>
#include <queue>
using namespace std;

vector<vector<int>> vec;
vector<bool> isvisit;

int result = 0;

void bfs(int n);

// 11724
int main()
{
	
	int V, E;
	cin >> V >> E;
	vec.resize(V + 1);
	isvisit.resize(V + 1);

	for (int i = 1; i <= E; i++)
	{
		int u, v;
		cin >> u >> v;
		vec[u].push_back(v);
		vec[v].push_back(u);
	}

	for (int i = 1; i <= V; i++)
	{
		if (isvisit[i] == false)
		{
			bfs(i);
			result++;
		}
	}

	cout << result;
	return 0;
}

void bfs(int n)
{
	isvisit[n] = true;

	queue<int> q;
	q.push(n);

	while (!q.empty())
	{
		int k = q.front();
		q.pop();

		for (int i = 0; i < vec[k].size(); i++)
		{
			int node = vec[k][i];
			if (isvisit[node]) continue;
			
			isvisit[node] = true;
			q.push(node);
		}
	}

}
반응형
LIST

'알고리즘 문제 > 백준' 카테고리의 다른 글

13023 ABCDE (DFS)  (0) 2023.04.04
2023 신기한 소수  (0) 2023.03.30
[C++] 절댓값 힙 - 11286  (1) 2023.02.15
[C++] 오큰수 - 17298  (0) 2023.02.13
11660 - 구간 합 구하기 5  (0) 2023.01.31