Cod sursa(job #182062)

Utilizator Spike7d8Cristian Varvara Spike7d8 Data 20 aprilie 2008 11:56:49
Problema Parcurgere DFS - componente conexe Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#ifdef WIN32
#define _CRT_SECURE_NO_WARNINGS
#endif

#include <stdio.h>

#include <vector>
using namespace std;

vector<int> v[100352];
int k[100352];


void dfs(int p, int c)
{
	if (k[p] != 0)
		return;

	k[p] = c;
	for (int i = 0; i < (int)v[p].size(); i++)
		dfs(v[p][i], c);
}


int main()
{
	freopen("dfs.in", "rt", stdin);
	freopen("dfs.out", "wt", stdout);

	int n, m;
	scanf("%d%d", &n, &m);
	for (int i = 0; i < m; i++)
	{
		int x, y;
		scanf("%d%d", &x, &y);
		v[x].push_back(y);
		v[y].push_back(x);
	}

	int c = 1;
	for (int i = 1; i <= n; i++)
		if (k[i] == 0)
			dfs(i, c++);

	printf("%d\n", c - 1);

	return 0;
}