Cod sursa(job #655876)

Utilizator lavinia_ilincaIlinca Lavinia lavinia_ilinca Data 3 ianuarie 2012 16:20:02
Problema Parcurgere DFS - componente conexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include<stdio.h>
FILE *in,*out;

struct nod
{
	int inf;
	nod *adr;
};

int n,m;
nod *a[100001];
int v[100001];

void adaug(int x,int y)
{
	nod *b=new nod;
	b->adr=a[x];
	b->inf=y;
	a[x]=b;
}

void citire()
{
	fscanf(in,"%d %d",&n,&m);
	int x,y;
	for (int i=1;i<=m;i++)
	{
		fscanf(in,"%d %d",&x,&y);
		adaug(x,y);
		adaug(y,x);
	}
}

void dfs(int x)
{
	v[x]=1;
	nod * b=new nod;
	b=a[x];
	while (b)
	{
		if (!v[b->inf]) dfs(b->inf);
		b=b->adr;
	}
}

int main()
{
	in=fopen("nr.in","r");
	out=fopen("nr.out","w");
	
	citire();
	
	int nr=0;
	for (int i=1;i<=n;i++) if (!v[i]) 
	{
		dfs(i);
		nr++;
	}
fprintf(out,"%d\n",nr);
return 0;
}