Pagini recente » Cod sursa (job #3288685) | Cod sursa (job #2820028) | Cod sursa (job #3280108) | Cod sursa (job #2359399) | Cod sursa (job #833805)
Cod sursa(job #833805)
#include<fstream>
using namespace std;
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;
}