Pagini recente » Cod sursa (job #1172946) | Cod sursa (job #1796473) | Cod sursa (job #2699446) | Cod sursa (job #949513) | Cod sursa (job #1704351)
#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;
}