Pagini recente » Cod sursa (job #2418219) | Cod sursa (job #2829511) | Cod sursa (job #1141351) | Cod sursa (job #2681287) | Cod sursa (job #473439)
Cod sursa(job #473439)
// Parcurgere in latime.cpp : Defines the entry point for the console application.
//
//#include "stdafx.h"
#include "stdio.h"
FILE *f=fopen("bfs.in", "r");
FILE *g=fopen("bfs.out", "w");
typedef struct nod
{
int x;
struct nod * adr;
};
nod *l[100001];
int n, m, s;
int c[100001], viz[100001], sol[100001];
int sum[100001];
void add(int x, int y)
{
nod *p=new nod;
p->x=y;
p->adr=l[x];
l[x]=p;
}
void read()
{
fscanf(f, "%d%d%d", &n, &m, &s);
for (int i=1; i<=m; ++i)
{
int x, y;
fscanf(f, "%d%d", &x, &y);
add(x, y);
}
c[1]=s;
}
void program()
{
int i=1;
int j=1;
while (i<=j)
{
int cr=c[i];
viz[cr]=1;
sol[cr]=sum[i];
nod *p=l[cr];
while (p!=NULL)
{
if (!viz[p->x])
{
c[++j]=p->x;
sum[j]=sum[i]+1;
}
p=p->adr;
}
while (viz[c[i]]) ++i;
}
for (int k=1; k<=n; ++k)
if (sol[k]!=0)
fprintf(g, "%d ", sol[k]);
else
if (k!=s) fprintf(g, "-1 ");
else
fprintf(g, "0 ");
}
int main()
{
read();
program();
return 0;
}