Cod sursa(job #882283)

Utilizator cindyandreea simon cindy Data 18 februarie 2013 23:37:36
Problema Parcurgere DFS - componente conexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<cstdio>

int viz[1005], a[1005][1005];
int b[1005], n, m, nr;

void citire()
{
	int x, y;
	freopen("dfs.in","r",stdin);
	scanf("%d %d",&n,&m);
	for(int i=1;i<=m;i++)
	{
		scanf("%d %d",&x,&y);
		a[x][y]=1;
		a[y][x]=1;
	}		
}

void dfs(int k)
{
	b[++b[0]]=k;
	viz[k]=1;
	for(int i=1;i<=n;i++)
		if(viz[i]==0 && a[k][i]==1)
			dfs(i);
}

void parcurgere()
{
	int i, j, k;
	for(i=1;i<=n;i++)
		viz[i]=0;
	for(k=1;k<n;k++)
	{
		i=b[k];
		viz[i]=1;
		for(j=b[k+1];j<=n;j++)
		{
			if(a[i][j]==0 && i!=j && viz[j]==0)
			{
				a[i][j]=1;
				a[j][i]=1;
				nr++;
			}			
		}
	}
}

void afisare()
{
	freopen("dfs.out","w",stdout);
	printf("%d",nr);
}

int main()
{
	citire();
	dfs(1);
	parcurgere();
	afisare();
}