Pagini recente » Istoria paginii runda/ooo/clasament | Cod sursa (job #200228) | Cod sursa (job #1243200) | Cod sursa (job #2903865) | Cod sursa (job #2767158)
#include <iostream>
#include <fstream>
#include <list>
std::list<int> adj[100001];
bool visited[100001];
std::ifstream fin("dfs.in");
std::ofstream fout("dfs.out");
// dfs algorithm
void dfs(int source, bool *visited) {
visited[source] = true;
for (auto it = adj[source].begin(); it != adj[source].end(); it++) {
if (!visited[*it]) {
dfs(*it, visited);
}
}
}
int main(void) {
int n, m, nr_comp = 0;
// read inputs
fin >> n >> m;
for (int i = 0; i < m; ++i) {
int n1, n2;
fin >> n1 >> n2;
adj[n1].push_back(n2);
}
for (int i = 0; i < n; ++i) {
if (!visited[i]) {
nr_comp++;
dfs(i, visited);
}
}
fout << nr_comp;
return 0;
}