Pagini recente » Cod sursa (job #1835373) | Cod sursa (job #1474284) | Cod sursa (job #2375822) | Cod sursa (job #2303388) | Cod sursa (job #464916)
Cod sursa(job #464916)
#include<stdio.h>
#include<stdlib.h>
#define dim 100000
using namespace std;
int *mat[dim],n,m,i,k,man,nod,x,y;
char viz[dim];
void dfs(int nod)
{int i;
viz[nod]=1;
for(i=1;i<=mat[nod][0];i++)
if(!viz[ mat[nod][i] ])
dfs(mat[nod][i]);
}
int verif()
{int i;
for(i=1;i<=n;i++)
if(!viz[i]) {man=i; return 1;}
return 0;}
int main()
{
FILE *f=fopen("dfs.in","r"), *g=fopen("dfs.out","w");
fscanf(f,"%d%d",&n,&m);
for(i=1;i<=n;i++)
{mat[i]=(int *)realloc(mat[i],sizeof(int));
mat[i][0]=0;
}
for(i=1;i<=m;i++)
{fscanf(f,"%d%d",&x,&y);
//mat[x][y]=1; mat[y][x]=1;
mat[x][0]++;
mat[x]=(int *)realloc(mat[x], (mat[x][0]+1)*sizeof(int));
mat[x][mat[x][0]]=y;
}
man=1;
pas:nod=man;
dfs(nod);
k++;
if(verif()) goto pas;
fprintf(g,"%d\n",k);
fclose(f);
fclose(g);
return 0;
}