Pagini recente » Cod sursa (job #3124475) | Cod sursa (job #2801000) | Cod sursa (job #1089274) | Cod sursa (job #1917940) | Cod sursa (job #1990013)
#include <iostream>
#include <fstream>
#include <vector>
void visit(std::vector<int> &check, std::vector<int> *vertices, int curr) {
check[curr] = true;
for (int vertex : vertices[curr]) {
if (!check[vertex]) {
visit(check, vertices, vertex);
}
}
}
int main() {
std::ifstream fileIn("dfs.in");
std::ofstream fileOut("dfs.out");
int nV, nE;
fileIn >> nV >> nE;
std::vector<int> *vertices = new std::vector<int>[nV + 1]();
std::vector<bool> check(nV + 1, false);
int from, to;
for (; nE > 0; nE--) {
fileIn >> from >> to;
vertices[from].push_back(to);
}
int vCount;
for (int i(1); i <= nV; i++) {
if (!check[i]) {
vCount++;
visit(check, vertices, i);
}
}
fileOut << vCount;
delete[] vertices;
fileIn.close();
fileOut.close();
return 0;
}