Cod sursa(job #944961)

Utilizator howsiweiHow Si Wei howsiwei Data 30 aprilie 2013 05:34:11
Problema Parcurgere DFS - componente conexe Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
#define ech(It, A) for (__typeof(A.begin()) It = A.begin(); It != A.end(); ++It)

vector<vector<int> > adjl;
vector<int> component;
int color = 1;

void dfs(int idx) {
	component[idx] = color;
	ech(it, adjl[idx]) {
		if (component[*it] == 0)
			dfs(*it);
	}
}

int main() {
	ifstream fin("dfs.in");
	ofstream fout("dfs.out");
	int n, m;
	fin >> n >> m;

	adjl.resize(n+1);
	component.resize(n+1);

	for (int i = 0; i < m; ++i) {
		int u, v;
		fin >> u >> v;
		adjl[u].push_back(v);
		adjl[v].push_back(u);
	}

	for (int i = 1; i <= n; ++i) {
		if (component[i] == 0) {
			dfs(i);
			++color;
		}
	}

	fout << color-1;

	return 0;
}