Pagini recente » Cod sursa (job #1533392) | Cod sursa (job #2776589) | Cod sursa (job #2024884) | Cod sursa (job #1309327) | Cod sursa (job #1936391)
#include <cstdio>
#include <vector>
#define NMAX 100005
#include <stack>
using std::stack;
using std::vector;
void DFS(int node, bool viz[], vector <int> G[], stack <int> S){
viz[node] = true;
S.push(node);
while(!S.empty()){
node = S.top();
S.pop();
for(int i{0};i < G[node].size();++i){
if(!viz[G[node][i]]){
viz[G[node][i]] = true;
S.push(G[node][i]);
}
}
}
}
int main(){
freopen("dfs.in","r", stdin);
freopen("dfs.out", "w",stdout);
int N, M;
std::vector <int> G[NMAX];
stack <int> S;
int x,y;
bool viz[NMAX];
scanf("%d %d ", &N, &M);
while(M--){
scanf("%d %d ", &x, &y);
G[x].push_back(y);
}
int nrc{0};
for(int i{1};i <= N;i++)
if(!viz[i]){
DFS(i, viz, G, S);
nrc++;
}
printf("%d\n", nrc);
return 0;
}