Pagini recente » Cod sursa (job #2307499) | Cod sursa (job #1898896) | Cod sursa (job #745509) | Cod sursa (job #2550517) | Cod sursa (job #148260)
Cod sursa(job #148260)
# include <stdio.h>
# include <stdlib.h>
# define NMAX 1000001
struct Nod{
long v;
Nod * ad;
};
Nod *L[NMAX],*p,*q;
char Viz[NMAX];
long nc,N,M,i,j,x,y;
int ok;
FILE *f=fopen("dfs.in","r"),*g=fopen("dfs.out","w");
void Dfs(long k)
{
long i;
Viz[k]=1;
if (L[k]!=NULL){
for (i=1;i<=N;i++)
if (Viz[i]==0){
p=L[i];
while (p!=NULL && (*p).v!=k)
p=(*p).ad;
if (p!=NULL) Dfs(i);
}
}
}
int main()
{
fscanf(f,"%ld %ld",&N,&M);
for (i=1;i<=M;i++)
{
fscanf(f,"%ld %ld",&x,&y);
p=new Nod; q=L[x];
(*p).v=y; (*p).ad=q;
L[x]=p;
q=new Nod; p=L[y];
(*q).v=x; (*q).ad=p;
L[y]=q;
}
fclose(f);
nc=1; i=1;
do{
ok=1;
Dfs(i);
for (j=i;j<=N;j++)
if (!Viz[j])
{
ok=0; i=j;
nc++; break;
}
}while (!ok);
fprintf(g,"%ld",nc);
fclose(g);
return 0;
}