Cod sursa(job #1048151)

Utilizator razvan2006razvan brezulianu razvan2006 Data 5 decembrie 2013 13:32:33
Problema Parcurgere DFS - componente conexe Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include<stdio.h>
#include<vector>
using namespace std;

int i, j, n, m, viz[100001];
vector<int> G[100001];

void dfs(int x) {
	if (viz[x] == 0) viz[0]++;
	
	viz[x] = 1; 
	
	for (int t = 0; t < G[x].size(); t++)
		if (viz[G[x][t]] == 0) dfs(G[x][t]);
}

int main () {
	freopen ("dfs.in", "rt", stdin);
	freopen ("dfs.out", "wt", stdout);
	
	scanf ("%d%d", &n, &m);
	
	int x, y;
	for (int i = 0; i < m; i++) {
		scanf ("%d%d", &x, &y);
		G[x].push_back(y); G[y].push_back(x);
	}
	
	int i = 1, nc = 0;
	while (i <= n) {
		if(viz[i] == 0) {
			dfs(i);
			nc++; 
		}
		i++;
	}
	
	printf ("%d\n", nc);
	
	return 0;
}