Cod sursa(job #1704352)

Utilizator hntrVInatoru Andrei-Ioan hntr Data 18 mai 2016 17:19:09
Problema Parcurgere DFS - componente conexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.33 kb
#include <iostream>
#include <vector>
#include <list>
#include <fstream> 
#include <stdio.h>
#include <string.h>

#define pb push_back
using namespace std;

FILE *f;
FILE *g;

void dfs(bool visited[], int v, list<int> *graph) {
	// facem nodul curent vizitat
	visited[v] = true;

	// parcurgem folosind un iterator si apoi, in mod recursiv, verificam daca e ok
	for(std::list<int>::iterator it = graph[v].begin(); it != graph[v].end() ; ++it) {
		if(!visited[*it]) {
			dfs(visited, *it, graph);
				// daca rezulta ciclu in mod recursiv
		}
		
	}
}

int main() {
	f = fopen("dfs.in", "r+");
	g = fopen("dfs.out", "w");
	int M, N, x, y, counter = 0;
	
	// graful ca un array de liste, nu am nevoie sa fie mai complicat deoarece
	// nu avem costuri
	std::list<int > *graph;
	
	// citim datele de intrare si formam graful
	aux = fscanf(f,"%d %d\n", &N, &M);
	graph = new list<int>[N + 1];
	for(int i = 0 ; i < M ; i++) {
		aux = fscanf(f,"%d %d\n", &x, &y);
		graph[x].push_back(y);
		graph[y].push_back(x);
	}
	/*
	bool *visited = new bool[N + 1];
	for(int i = 1 ; i <= N ; i++) {
		visited[i] = false;
	}

	// crestem contorul daca nu e ciclu
	// aici parcurgem DFs-ul si are complexitate de O(V+E)
	for(int i = 1 ; i <= N ; i++) {
		if(visited[i] == false) {
			counter++;
			//dfs(visited, i, graph);	
			
		}
	}

	fprintf(g, "%d\n", counter);
	*/
	return 0;

}