Cod sursa(job #374857)

Utilizator GotenAmza Catalin Goten Data 18 decembrie 2009 15:21:43
Problema Parcurgere DFS - componente conexe Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include<fstream.h>
#include<iostream.h>

int v[401000][2],start[101000],viz[101000],n,m,i,x,nr,y,k;

void df(int nod)
{
	int t;
	t=start[nod];
	viz[nod]=1;
	while(t)
	{
		if(!viz[v[t][0]])
			df(v[t][0]);
		t=v[t][1];
	}
}

int main()
{
	ifstream f("dfs.in");
	ofstream g("dfs.out");
	f>>n>>m;
	for(i=1;i<=m;i++)
	{
		f>>x>>y;
		v[++k][0]=y;
		v[k][1]=start[x];
		start[x]=k;
		v[++k][0]=x;
		v[k][1]=start[y];
		start[y]=k;
	}
	i=1;
	nr=0;
	while(i<=n)
	{
		while(viz[i])
			i++;
		if(i<=n)
		{
			df(i);
			nr++;
		}
	}
	g<<nr;
	return 0;
}