Cod sursa(job #662206)

Utilizator angi.nNeata Angelica angi.n Data 16 ianuarie 2012 02:41:23
Problema Parcurgere DFS - componente conexe Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<iostream>
#include<fstream>
#include<stdlib.h>
#include<vector>
 using namespace std;
ifstream in("dfs.in");
ofstream out("dfs.out");
vector <int> muchii[100001];
void DF(int *vizitat,int i)
{
	vizitat[i]=1;
	for(int j=0;j<muchii[i].size();j++)
		if(vizitat[muchii[i][j]]==0)
			DF(vizitat,muchii[i][j]);	
}
int main()
{
	int n,m,*vizitat,i,x,y,nr=0;
	in>>n>>m;
	vizitat=( int *)calloc((n+1),sizeof( int ));
	//citim lista de muchii
	for(i=1;i<=m;i++)
	{
		in>>x>>y;
		muchii[x].push_back(y);
		muchii[y].push_back(x);	
	}
	for(i=1;i<=n;i++)
		if(vizitat[i]==0)
		{	//crestem nr de componente conexe 
			nr++;
			//determinam o alta componenta
			DF(vizitat,i);
		}
	out<<nr;
	free(vizitat);
	in.close();
	out.close();
	return 0;

}