나의 브을로오그으

[c++] 11724번 : 연결 요소의 개수 본문

알고리즘/BaekJoon

[c++] 11724번 : 연결 요소의 개수

__jhp_+ 2022. 9. 20. 22:21

https://www.acmicpc.net/problem/11724

 

11724번: 연결 요소의 개수

첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주

www.acmicpc.net

#include <iostream>
#include <queue>

using namespace std;

void PassComponents(int from, int N, bool vertex[1001], bool edge[][1001]);
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(NULL);

	bool edge[1001][1001] = { false, };
	bool vertex[1001] = { false, };
	int N, M, u, v, cnt = 0;
	cin >> N >> M;

	for (int i = 0; i < M; ++i)
	{
		cin >> u >> v;
		edge[u][v] = true;
		edge[v][u] = true;
	}

	for (int from = 1; from <= N; ++from)
	{
		if (vertex[from] == false)
		{
			++cnt;
			PassComponents(from, N, vertex, edge);
		}
	}

	cout << cnt << '\n';
	return 0;
}

void PassComponents(int from, int N, bool vertex[1001], bool edge[][1001])
{
	queue<int> q;

	q.push(from);
	vertex[from] = true;
	while (!q.empty())
	{
		from = q.front();
		q.pop();

		for (int to = 1; to <= N; ++to)
		{
			if (vertex[to] == false && edge[from][to] == true)
			{
				vertex[to] = true;
				q.push(to);
			}
		}
	}
}

'알고리즘 > BaekJoon' 카테고리의 다른 글

[c++] 11727번 : 2 x n 타일링 2  (0) 2022.09.27
[c++] 11726번 : 2Xn 타일링  (0) 2022.09.20
[c++] 11723번 : 집합  (0) 2022.09.19
[c++] 11659번 : 구간 합 구하기 4  (0) 2022.09.19
[c++] 11403번 : 경로 찾기  (0) 2022.09.19