연결 요소의 개수

BiBi·2021년 2월 4일
0

코딩테스트연습

목록 보기
58/66
#include <iostream>
#include <queue>
#include <stdio.h>

int arr[1001][1001];
bool vi[1001];
bool vi2[1001];
int n, m;


void dfs(int v) {
	std::queue<int> q;
	q.push(v);
	vi[v] = 1;
	while (!q.empty()) {
		int news = q.front();
		q.pop();
		for (int i = 1;i <= n;i++) {
			if (arr[news][i] && !vi[i]) {
				q.push(i);
				vi[i] = 1;
			}
		}
	}

}

int main() {
	scanf("%d %d", &n, &m);

	for (int i = 0;i < m;i++) {
		int a, b;
		scanf("%d %d", &a, &b);
		arr[a][b] = 1;
		arr[b][a] = 1;
	}
	int cnt = 0;
	for (int i = 1;i <= n;i++) {
		if (!vi[i]) {
			dfs(i);
			cnt++;
		}
	}
	printf("%d", cnt);
}
profile
Server Network Engineer

0개의 댓글