Cod sursa(job #341681)

Utilizator bog29Antohi Bogdan bog29 Data 19 august 2009 11:52:36
Problema Parcurgere DFS - componente conexe Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<fstream>
#include<stdlib.h>
#define dmax 100003
using namespace std;
ifstream in("dfs.in");
ofstream out("dfs.out");
bool viz[dmax];
int n,m,cc;
int * dr[dmax];
void dfs(int k)
{	int i;
	for(i=1;i<=dr[k][0];i++)
		if(viz[dr[k][i]]==0)
		{	viz[dr[k][i]]=1;
			dfs(dr[k][i]);
		}	
}	
int main()
{	int i,x,y,j;
	in>>n>>m;
	for(i=1;i<=n;i++)
	{	dr[i]=(int *)realloc(dr[i],sizeof(int));
		dr[i][0]=0;
	}
		
	for(i=1;i<=m;i++)
	{	in>>x>>y;
		dr[x][0]++;
		dr[x]=(int *)realloc(dr[x],(dr[x][0]+1)*sizeof(int));
		dr[x][dr[x][0]]=y;
		dr[y][0]++;
		dr[y]=(int *)realloc(dr[y],(dr[y][0]+1)*sizeof(int));
		dr[y][dr[y][0]]=x;
	}
	in.close();
	for(i=1;i<=n;i++)
	{	if(viz[i]==0)
		{	cc++;
			dfs(i);
		}
	}	
	out<<cc;
	out.close();
	return 0;
}