Cod sursa(job #604465)

Utilizator batistaUPB-Oprea-Cosmin-Dumitru batista Data 22 iulie 2011 16:20:39
Problema Parcurgere DFS - componente conexe Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include<fstream>
using namespace std;
long x,y,n,i,m,nr;
struct nod{int info;nod *adr;} *v[100002];
short viz[200002],c[200002]; 
void bf(int nod)
{ long u=1,p=1;
  c[1]=nod; viz[nod]=1;
   while(p<=u)
   {
	nod=c[p];
	 while(v[nod])
	 { 
		if(!viz[v[nod]->info]){ u++; c[u]=v[nod]->info; viz[c[u]]=1;}
		v[nod]=v[nod]->adr;
	 }
	  p++;
   }
}

int main()
{
	ifstream f("dfs.in");ofstream g("dfs.out");
	f>>n>>m;
	for(i=1;i<=m;i++)
	{f>>x>>y;
	 //add nod
                 nod *p=new nod;	p->info=y;	p->adr=v[x];	v[x]=p;
                 nod *q=new nod;	q->info=x;	q->adr=v[y];	v[y]=q;
	}
	//copiez nodurile initiale
	for(i=1;i<=n;i++)
	  if(!viz[i]) { nr++; bf(i);}
	  g<<nr;
	f.close();g.close();
return 0;}