Pagini recente » Cod sursa (job #278663) | Cod sursa (job #363164) | Cod sursa (job #2848127) | Cod sursa (job #2310530) | Cod sursa (job #651259)
Cod sursa(job #651259)
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define max 100001
typedef struct node
{int info;
struct node *next;}node;
FILE *f;FILE *g;
node *list[max],*nod;
int c[max];char v[max];int D[max];
int n,m,i,u,p,x,s,y;
int main()
{
f=fopen("bfs.in","r");
g=fopen("bfs.out","w");
fscanf(f,"%d",&n);
fscanf(f,"%d",&m);
fscanf(f,"%d",&s);
for (i=1;i<=m;i++)
{fscanf(f,"%d",&x);fscanf(f,"%d",&y);
nod = (node *)malloc(sizeof(node));
nod->info = y;
nod->next = list[x];
list[x] = nod;}
c[1] = s;
v[s] = 1;u =1; p = 1;
while (p<=u)
{nod = list[c[p]];
while (nod!=NULL)
{if (v[nod->info]==0)
{u++;
c[u] = nod->info;
v[nod->info] = 1;
D[nod->info] = D[c[p]]+1;}
nod = nod->next;}
p++;}
int k=-1;
for(i=1;i<=n;i++)
if (v[i] == 0)
fprintf(g,"%d ",k);
else
fprintf(g,"%d ",D[i]);
fclose(f);
fclose(g);free(nod);
return 0;}