Pagini recente » Cod sursa (job #2287051) | Cod sursa (job #1457218) | Cod sursa (job #2731373) | Cod sursa (job #3280728) | Cod sursa (job #2422124)
#include <iostream>
#include<fstream>
#include <vector>
using namespace std;
ifstream fin("dfs.in");
ofstream fout("dfs.out");
const int N = 100001;
vector<vector<int>> G(N + 1);
int n, m;
void citire() {
fin >> n >> m;
int x, y;
for (int i = 1; i <= n; i++) {
fin >> x >> y;
G[x].push_back(y);
}
}
void dfs(int x, vector<bool> &viz) {
viz[x] = true;
for (auto vecin:G[x])
if (!viz[vecin]) dfs(vecin, viz);
}
int nrComp() {
citire();
int comp = 0;
vector<bool> viz(n, false);
for (int i = 1; i <= n; i++)
if (!viz[i]) {
comp++;
dfs(i, viz);
}
return comp;
}
int main() {
fout << nrComp();
return 0;
}