Cod sursa(job #688799)

Utilizator CossuCosmiuc Tudor Cossu Data 23 februarie 2012 20:55:07
Problema Parcurgere DFS - componente conexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<iostream>
#include<fstream>
#include<cstring>
using namespace std;
long viz[20],a[20][20],i,j,k,nr,n,m;
fstream f("dfs.in",ios::in),g("dfs.out",ios::out);

void citire(long a[20][20],long &n)
{f>>n>>m;cout<<m<<endl;
 if (m==0) g<<n; else for(i=1;i<=m;i++) {f>>k>>nr;a[k][nr]=a[nr][k]=1;};f.close();}

void afisare()
{for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
	cout<<a[i][j]<<' ';
cout<<endl;}}

void df(long nod)
{viz[nod]=1;
 for(k=1;k<=n;k++)
    if(a[nod][k]==1&&viz[k]==0)
		df(k);
}	

int main()
{citire(a,n);int ok;
 afisare();
 nr=-1;
 df(1);
 memset (viz,0,sizeof(viz));
 do{ok=0;for(j=1;j<=n;j++) if(viz[j]==0) {df(j); nr++;ok=1;}}
   while(ok==1);
 g<<nr;cout<<nr;
}