Pagini recente » Cod sursa (job #2042659) | Cod sursa (job #2120217) | Cod sursa (job #1959640) | Cod sursa (job #41710) | Cod sursa (job #269362)
Cod sursa(job #269362)
#include <fstream.h>
#define MAX 100001
ifstream in("dfs.in");
ofstream out("dfs.out");
struct NOD{ int info;
NOD *urm;} *VF[MAX];
int k,n,m,s[MAX],d[MAX],st[MAX],prim,ultim;
void init(){
int i;
for(i=1;i<=n;++i)s[i]=0;
}
void adauga(NOD *&prim,int y){
NOD *p;
p = new NOD;
p->info = y;
p->urm = prim;
prim = p;
}
void citire(){
int x,y;
in>>n>>m;
while(in>>x>>y){
adauga(VF[x],y);
adauga(VF[y],x);
}
}
void parcurge(int i){
int j=0;
NOD *q;
prim = ultim = 1;
s[i] = k;
st[prim] = i;
while(prim<=ultim && j<n){
for(q = VF[st[prim]];q!=NULL;q=q->urm)
if(!s[q->info])
{
st[++ultim] = q->info;
s[q->info] = k;
j++;
}
prim++;
}
}
int main(){
citire();
for(int i=1;i<=n;++i)
if(!s[i]){
k++;
parcurge(i);
}
out<<k;
return 0;
}