Pagini recente » Diferente pentru utilizator/gabor_oliviu1991 intre reviziile 20 si 21 | Istoria paginii problema/dk | Diferente pentru utilizator/dranaxum intre reviziile 17 si 18 | Diferente pentru blog/interviu-cu-catalin-francu intre reviziile 18 si 21 | Cod sursa (job #1036257)
#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.txt", ios::in);
fstream g("dfs.out.txt", 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;
}