Cod sursa(job #397086)

Utilizator BooZZySandu Bogdan BooZZy Data 16 februarie 2010 12:48:05
Problema Parcurgere DFS - componente conexe Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include<stdio.h>
int n,m,i,x,y,viz[100005],k;
struct nod
{
	int inf;
	nod *adr;
};
nod *l[200005],*p;
void dfs(int no)
{
	nod *c;
	viz[no]=k;
	c=l[no];
	while(c)
	{
		if(!viz[c->inf])
			dfs(c->inf);
		c=c->adr;
	}
	
}
int main()
{
	freopen("dfs.in","r",stdin);
	freopen("dfs.out","w",stdout);
	scanf("%d %d",&n,&m);
	for(i=0;i<m;i++)
	{
		scanf("%d %d",&x,&y);
		p=new nod;
		p->adr=l[x];
		p->inf=y;
		l[x]=p;
		p=new nod;
		p->adr=l[y];
		p->inf=x;
		l[y]=p;
	}
	k=1;
	for(i=1;i<=n;i++)
		if(!viz[i])
		{
			dfs(i);
			k++;
		}
	printf("%d",k-1);
	return 0;
}