Pagini recente » Cod sursa (job #2051804) | Cod sursa (job #2119343) | Cod sursa (job #3195043) | Cod sursa (job #1596607) | Cod sursa (job #1244854)
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
int N, M;
vector<vector<int>> adj(100001);
vector<bool> marked(100001, false);
void dfs(int source){
for(int i = 0; i < adj[source].size(); i++){
if(!marked[adj[source][i]]){
marked[adj[source][i]] = true;
dfs(adj[source][i]);
}
}
}
int main(){
int from, to, cnt = 0;
freopen("dfs.in", "r", stdin);
freopen("dfs.out", "w", stdout);
scanf("%d%d", &N, &M);
for(int i = 0; i < M; i++){
scanf("%d%d", &from, &to);
adj[--from].push_back(--to);
}
for(int i = 0; i < N; i++){
if(!marked[i]){
dfs(i);
cnt ++ ;
}
}
printf("%d\n", cnt);
return 0;
}