Pagini recente » Cod sursa (job #1586357) | Cod sursa (job #1974888) | Cod sursa (job #2328778) | Cod sursa (job #325754) | Cod sursa (job #1235599)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
typedef struct lista
{
int info;
lista *next;
}*nod;
void add( int x, nod &y)
{
nod p=new lista;
p->info=x;
p->next=y;
y=p;
}
int bg, sf, n, m, s, x, y, i, viz[100005], rs[100005], q[1000005];
nod tab[100005], p;
int main()
{
cin>>n>>m>>s;
for (i=1; i<=m; ++i)
{
cin>>x>>y;
add(y, tab[x]);
}
for (i=1; i<=n; ++i)
rs[i]=-1;
bg=1; sf=1; q[1]=s; rs[s]=0; viz[s]=1;
while (bg<=sf)
{
for (p=tab[q[bg]]; p; p=p->next)
if (viz[p->info]==0)
{
++sf;
q[sf]=p->info;
rs[q[sf]]=rs[q[bg]]+1;
viz[p->info]=1;
}
++bg;
}
for(i=1;i<=n;i++) cout<<rs[i]<<' ';
return 0;
}