less than 1 minute read

2606

#include <cstdio>
using namespace std;
const int MAX = 100;
void dfs(int start);
int mat[MAX][MAX];
int visited[MAX];
int cnt = 0;
int n, m;
int main() {
	int i, j, a, b;
	
	scanf("%d", &n);
	scanf("%d", &m);
	
	for (i = 0; i < n; i++) {
		for (j = 0; j < n; j++) {
			mat[i][j] = 0;
		}
		visited[i] = 0;
	}

	for (i = 0; i < m; i++) {
		scanf("%d %d", &a, &b);
		mat[a - 1][b - 1] = 1;
		mat[b - 1][a - 1] = 1;
	}

	visited[0] = 1;
	for (i = 0; i < n; i++) {
		if (mat[0][i] && !visited[i]) {
			cnt++;
			dfs(i);
		}
	}

	printf("%d", cnt);

	return 0;
}

void dfs(int start) {
	int i, j;
	visited[start] = 1;

	for (i = 0; i < n; i++) {
		if (mat[start][i] && !visited[i] && (i != start)) {
			cnt++;
			dfs(i);
		}
	}
}

Categories:

Updated: