Cod sursa(job #1028252)

Utilizator ady.adrianADRIAN ANDREI ady.adrian Data 13 noiembrie 2013 20:15:45
Problema Parcurgere DFS - componente conexe Scor 35
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

vector<int> adiacenta[500015];
bool vizitat[103000];

int varfuri, muchii, conexe;

ifstream fin("dfs.in");
ofstream fout("dfs.out");


int citire() {
	int from, to;
	fin >> varfuri >> muchii;
	for (int i = 0; i < muchii; i++) {
		fin >> from >> to;
		adiacenta[from].push_back(to);
		adiacenta[to].push_back(from); //graful e neorientat
	}
	return 0;
}

int df(int inceput) {
	vizitat[inceput] = true;
//	for(int& varf : adiacenta[inceput]) {
//		if (!vizitat[varf])
//			df(varf);
//	}

	int size = adiacenta[inceput].size(), varf;
	for (int i = 0; i < size; ++i) {
		varf = adiacenta[inceput][i];
		if (!vizitat[varf])
			df(varf);
	}
	return 0;
}


int main(int argc, char const *argv[])
{
	int componente = 0;
	citire();
	
	for (int i = 0; i < varfuri; i++) {
		vizitat[i] = false;
	}
	for (int varf = 0; varf < varfuri; varf++) {
		if (!vizitat[varf]) {
			df(varf);
			componente++;
		}
	}
	fout << componente;
	return 0;

}