Cod sursa(job #833804)

Utilizator frongeorgecosminextreme nimpho frongeorgecosmin Data 13 decembrie 2012 08:28:10
Problema Parcurgere DFS - componente conexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<fstream.h>
ifstream f("dfs.in");
ofstream g("dfs.out");
long start[100005],k,n,m,v[2][400010];
short al[100005];
long bf[100005];
 
int main()
{f>>n>>m;
 long i,x,y;
 for(i=1;i<=m;i++)
    {f>>x>>y;
     v[1][++k]=x;
     v[0][k]=start[y];
     start[y]=k;
     v[1][++k]=y;
     v[0][k]=start[x];
     start[x]=k;
     }
 k=1;
 long auxk=k,last=2;
 short sem=1;
 bf[1]=1;
 al[1]=1;
 long comp=0;
 while(sem)
    {while(auxk<=k && k<n)
        {for(i=start[bf[auxk]];i!=0;i=v[0][i])
            if(al[v[1][i]]==0) {bf[++k]=v[1][i];al[v[1][i]]=1;}
         auxk++;
        }
     comp++;
     if(k==n) sem=0;
     else for(i=last;i<=n;i++) if(al[i]==0) {bf[++k]=i;al[i]=1;auxk=k;last=i+1;i=n+1;}
    }
	g<<comp;
 f.close();
 g.close();
 return 0;
}