Cod sursa(job #556367)

Utilizator iconiKMircea Chirea iconiK Data 16 martie 2011 09:16:38
Problema Parcurgere DFS - componente conexe Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <fstream>
#include <vector>
using namespace std;

int N, M;

vector<vector<int> > g;
vector<int> viz;

void dfs(int n)
{
	viz[n] = 1;

	for (int i = 1; i <= N; i++)
		if (!viz[i] && g[n][i])
			dfs(i);
}

int main()
{
	ifstream in("dfs.in");
	in >> N >> M;
	
	g.resize(N + 1);
	viz.resize(N + 1);

	for (int i = 0; i <= N; i++)
		g[i].resize(N + 1, 0);

	for (int i = 1; i <= M; i++)
	{
		int x, y;
		in >> x >> y;

		g[x][y] = g[y][x] = 1;
	}

	int nr = 0;

	for (int i = 1; i <= N; i++)
	{
		if (!viz[i])
		{
			nr++;
			dfs(i);
		}
	}

	ofstream out("dfs.out");
	out << nr;
}