Pagini recente » Cod sursa (job #1198416) | Cod sursa (job #2543158) | Cod sursa (job #2821983) | Cod sursa (job #2147689) | Cod sursa (job #1001115)
#include <iostream>
#include <fstream>
#include <vector>
#include <stack>
using namespace std;
ifstream fin("dfs.in");
ofstream fout("dfs.out");
int N,M;
const int maxN = 100010;
vector<int>adj[maxN];
int vis[maxN];
void dfs();
void dfs(int i);
int main()
{
fin>>N;
fin>>M;
for(int i=0; i<M; i++)
{
int source,dest;
fin>>source;
fin>>dest;
adj[source].push_back(dest);
}
dfs();
return 0;
}
void dfs()
{
stack<int> st;
int nrConexe =0;
for(int i=1; i<=N; i++)
{
if(vis[i]==0)
{
nrConexe++;
dfs(i);
}
}
fout<<nrConexe;
fout<<endl;
}
void dfs(int nod){
vis[nod]=1;
int nrNeigh = adj[nod].size();
for(int i=0;i<nrNeigh;i++){
if(!vis[adj[nod][i]]){
dfs(adj[nod][i]);
}
}
}