Pagini recente » Cod sursa (job #1613109) | Cod sursa (job #588157) | Cod sursa (job #2032634) | Cod sursa (job #2848704) | Cod sursa (job #1354336)
#include <fstream>
#include <cstring>
using namespace std;
ofstream g("bfs.out");
int N, M, S, x, y, dist[100001], coada[100001], prim, ultim;
struct nod
{
int info;
nod *urm;
} *p, *li[100001];
bool viz[100001];
void push(nod *&li, int informatie)
{
p=new nod();
p->info=informatie;
p->urm=li;
li=p;
}
void BFS()
{
memset(dist, -1, sizeof(dist));
dist[S]=0;
coada[1]=S;
viz[S]=true;
ultim=1;
for(prim=1; prim<=ultim; prim++)
{
S=coada[prim];
for(p=li[S]; p; p=p->urm)
if(!viz[p->info])
{
viz[p->info]=true;
dist[p->info]=dist[S]+1;
ultim++;
coada[ultim]=p->info;
}
}
}
int main()
{
int i;
FILE *f;
f=fopen("bfs.in","r");
fscanf(f, "%d%d%d", &N, &M, &S);
for(i=1; i<=M; i++)
{
fscanf(f, "%d%d", &x, &y);
push(li[x], y);
}
BFS();
for(i=1; i<=N; i++)
g<<dist[i]<<" ";
return 0;
}