Pagini recente » Cod sursa (job #3140031) | Cod sursa (job #1784737) | Cod sursa (job #2150798) | Cod sursa (job #2880351) | Cod sursa (job #158990)
Cod sursa(job #158990)
#include<fstream.h>
#include<stdio.h>
//ifstream f("date.in");
//ofstream g("date.out");
long start[100005],k,n,m,v[2][400005];
short al[100005],bf[100005];
int main()
{freopen("dfs.in","r",stdin);
freopen("dfs.out","w",stdout);
//f>>n>>m;
scanf("%ld%ld",&n,&m);
long i,x,y;
for(i=1;i<=m;i++)
{//f>>x>>y;
scanf("%ld%ld",&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;
}
//long nv=k;
k=1;
long auxk=k;
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]]) {bf[++k]=v[1][i];al[v[1][i]]=1;}
auxk++;
}
comp++;
if(k==n) sem=0;
else for(i=1;i<=n;i++) if(!al[i]) {bf[++k]=i;auxk=k;i=n+1;}
}
printf("%ld",comp);
//f.close();
//g.close();
return 0;
}