Pagini recente » Cod sursa (job #2538853) | Cod sursa (job #746624) | Cod sursa (job #2201819) | Cod sursa (job #2826010) | Cod sursa (job #159002)
Cod sursa(job #159002)
#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]]==0) {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]==0) {bf[++k]=i;al[i]=1;auxk=k;i=n+1;}
}
printf("%ld",comp);
//f.close();
//g.close();
return 0;
}