Pagini recente » Cod sursa (job #177040) | Cod sursa (job #794880) | Cod sursa (job #132514) | Cod sursa (job #2601116) | Cod sursa (job #2200731)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("dfs.in");
ofstream fout("dfs.out");
int N,M;
int nrcomponente;
struct Nod
{
vector <int> Ad;
int component=0;
};
Nod A[100002];
void Read()
{
fin>>N>>M;
int x,y;
for(int i=1; i<=M; ++i)
{
fin>>x>>y;
A[x].Ad.push_back(y);
}
fin.close();
}
void DFS(int nod)
{
A[nod].component=nrcomponente;
for(int i=0; i<A[nod].Ad.size(); ++i)
if(A[A[nod].Ad[i]].component==0)
DFS(A[nod].Ad[i]);
}
void Do()
{
for(int i=1; i<=N; ++i)
if(A[i].component==0)
++nrcomponente,
DFS(i);
}
void Print()
{
fout<<nrcomponente<<'\n';
fout.close();
}
int main()
{
Read();
Do();
Print();
return 0;
}