Pagini recente » Istoria paginii utilizator/cristinaboabes | Cod sursa (job #128831) | Cod sursa (job #686052) | Cod sursa (job #595856) | Cod sursa (job #1138546)
#include<stdio.h>
using namespace std;
int vf[400005], urm[400005], lst [100005],viz[100001], nr = 0;
inline void adauga (int x, int y)
{
++nr;
vf[nr] = y;
urm[nr] = lst[x];
lst[x] = nr;
}
inline void dfs (int x)
{
int p, y;
viz[x] = true;
p = lst[x];
while (p != 0)
{
y = vf[p];
if (!viz[y])
dfs(y);
p = urm[p];
}
}
int main ()
{
FILE *in , *out;
in = fopen ("dfs.in", "r");
out = fopen ("dfs.out", "w");
int n, m;
fscanf (in, "%d%d", &n, &m);
int x, y,i;
for (i = 1; i <= m; i++)
{
fscanf (in, "%d%d", &x, &y);
adauga(x, y);
}
int c = 0;
for (i = 1; i <= m; i++)
{
if (viz[lst[i]] == 0)
{
c++;
dfs(lst[i]);
}
}
fprintf (out, "%d", c);
return 0;
}