Pagini recente » Cod sursa (job #2327447) | Cod sursa (job #854593) | Cod sursa (job #2030835) | Cod sursa (job #2287134) | Cod sursa (job #772178)
Cod sursa(job #772178)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
struct dfs
{
vector<unsigned int> urmasi;
bool vizitat;
};
dfs* vi;
void adauga(long a, long b)
{
vi[a].urmasi.push_back(b);
}
void depth(long a)
{
if (vi[a].vizitat)
return;
for (long i = 0; i < vi[a].urmasi.size(); i++)
depth(vi[a].urmasi.at(i));
vi[a].vizitat = true;
}
int main()
{
ifstream in("dfs.in");
ofstream out("dfs.out");
long n, m;
in >> n >> m;
vi = new dfs[n];
for (long i = 0; i < n; i++)
vi[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 (!vi[i].vizitat)
if (vi[i].urmasi.empty())
contor++, vi[i].vizitat = true;
else
depth(i), contor++;
out << contor << "\n";
return 0;
}