Pagini recente » Cod sursa (job #1267220) | Cod sursa (job #3170406) | Cod sursa (job #376222) | Cod sursa (job #1668947) | Cod sursa (job #1990015)
#include <iostream>
#include <fstream>
#include <vector>
void visit(std::vector<bool> &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(0);
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;
}