Cod sursa(job #148092)

Utilizator c_sebiSebastian Crisan c_sebi Data 3 martie 2008 21:43:31
Problema Parcurgere DFS - componente conexe Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream.h>
#include <alloc.h>

int *A[100001], n, viz[100001], m;

void read(){
	int x, y, i;
	ifstream f("dfs.in");
	f>>n>>m;
	for(i=1; i<=n; i++) {A[i] = (int *)realloc(A[i], sizeof(int)); A[i][0]=0;}
	for(i=1; i<=m; i++){
		f>>x>>y;
		A[x][0]++;A[x] = (int *)realloc(A[x], (A[x][0]+1)*sizeof(int));
		A[y][0]++;A[y] = (int *)realloc(A[y], (A[y][0]+1)*sizeof(int));
		A[x][A[x][0]]=y;
		A[y][A[y][0]]=x;
	}
	f.close();
}

void df(int i){
	int j;
	viz[i]=1;
	for(j=1; j<=A[i][0]; j++)
		if(!viz[A[i][j]])
			df(A[i][j]);
}

int main(){
	int Rez=0, i;
	read();
	for(i=1; i<=n; i++)
		if(!viz[i]){
			Rez++;
			df(i);
		}
	ofstream g("dfs.out");
	g<<Rez<<"\n";
	g.close();
	return 0;
}