Pagini recente » Rating Moldovan Andrei (Moldovan_Andrei112002) | Cod sursa (job #1172632) | Arhiva de probleme | Cod sursa (job #2022931) | Cod sursa (job #146757)
Cod sursa(job #146757)
#include<stdio.h>
struct nod{long info;nod *next;};
nod *lv[100001];
long viz[100001],sol,i,x,y,n,m;
void pune(long a,long b);
void dfs(long a);
int main()
{ FILE *f=fopen("dfs.in","r"),
*g=fopen("dfs.out","w");
fscanf(f,"%ld%ld",&n,&m);
for(i=1;i<=m;i++) {fscanf(f,"%ld%ld",&x,&y);pune(x,y);pune(y,x);}
for(i=1;i<=n;i++)
if(!viz[i]){ sol++;viz[i]=1;dfs(i);}
fprintf(g,"%ld",sol);
fcloseall();
return 0;
}
void pune(long a,long b)
{
nod *paux;
paux->info=b;
if(!lv[a]){paux->next=0;lv[a]=paux;return;}
paux->next=lv[a];lv[a]=paux;
}
void dfs(long a)
{
nod *paux;
paux=lv[a];
while(paux)
{ if(!viz[paux->info])
{ viz[paux->info]=1;dfs(paux->info);}
paux=paux->next;
}
}