Pagini recente » Istoria paginii utilizator/vladxte08 | Monitorul de evaluare | Monitorul de evaluare | Istoria paginii utilizator/orzataandrei | Cod sursa (job #411468)
Cod sursa(job #411468)
#include<iostream>
using namespace std;
unsigned int n, m, *viz, nr;
typedef struct nod { int x; nod *a; } *pNod;
pNod v[100005];
void add(pNod &dest, int y)
{
nod *p = new nod;
p -> x = y;
p -> a = dest;
dest = p;
}
void citire()
{
FILE *fin = fopen("dfs.in", "r");
fscanf(fin, "%d %d", &n, &m);
int x, y;
viz = (unsigned int *)realloc(viz, sizeof(unsigned int) * (n + 1));
//v = (pNod)realloc(v, sizeof(nod *) * (n * (n - 1) / 2 + 1));
for(unsigned int i = 1; i <= n; i++)
{
fscanf(fin, "%d %d", &x, &y);
add(v[x], y);
add(v[y], x);
}
fclose(fin);
}
void dfs(int x)
{
nod *p;
viz[x] = 1;
for(p = v[x]; p != NULL; p = p -> a)
if(!viz[p -> x])
dfs(p -> x);
}
int main()
{
citire();
for(int i=1; i <= n; i++)
if(!viz[i])
{
dfs(i);
nr++;
}
FILE *fout = fopen("dfs.out", "w");
fprintf(fout, "%d", nr);
fclose(fout);
//system("pause");
return 0;
}