Pagini recente » Cod sursa (job #820996) | Cod sursa (job #2466833) | Cod sursa (job #2048307) | Cod sursa (job #372795) | Cod sursa (job #772042)
Cod sursa(job #772042)
#include <iostream>
#include <fstream>
using namespace std;
struct dfs
{
long* urmasi;
long cat;
bool vizitat;
};
dfs* vector;
void adauga(long a, long b)
{
vector[a].urmasi[++vector[a].cat] = b;
}
void depth(long a)
{
if (vector[a].vizitat)
return;
for (long i = 1; i <= vector[a].cat; i++)
depth(vector[a].urmasi[i]);
vector[a].vizitat = true;
}
int main()
{
ifstream in("dfs.in");
ofstream out("dfs.out");
long n, m;
in >> n >> m;
vector = new dfs[n];
for (long i = 0; i < n; i++)
{
vector[i].cat = 0;
vector[i].urmasi = new long[m - 1];
vector[i].vizitat = false;
}
for (long i = 0; i < m; i++)
{
long unde, pecine;
in >> unde >> pecine;
unde--, pecine--;
adauga(unde, pecine);
}
long contor = 0;
for (long i = 0; i < n; i++)
if (!vector[i].vizitat)
depth(i), contor++;
out << contor;
return 0;
}