Pagini recente » Monitorul de evaluare | Monitorul de evaluare | Diferente pentru utilizator/cosminono intre reviziile 22 si 34 | Diferente pentru utilizator/cosminono intre reviziile 13 si 34 | Cod sursa (job #1036258)
#include<fstream>
using namespace std;
int viz[1000000], c;
struct nodul
{
int val;
nodul*urm;
};
nodul*v[1000000];
void add(nodul*& x, int y)
{
nodul*p = new nodul;
p->val = y;
p->urm = x;
x = p;
}
void dfs(int node)
{
nodul*p;
viz[node] = 1;
for (p = v[node]; p != NULL;p=p->urm)
if (viz[p->val] == 0)dfs(p->val);
}
int main()
{
fstream f("dfs.in", ios::in);
fstream g("dfs.out", ios::out);
int m, n, x, y, i;
f >> n >> m;
for (i = 1; i <= m; i++)
{
f >> x >> y;
add(v[x], y);
add(v[y], x);
}
for (i = 1; i <= n; i++)
if (viz[i] == 0)
{
c++;
dfs(i);
}
g << c;
return 0;
}