Pagini recente » Cod sursa (job #2871013) | Cod sursa (job #1438845) | Cod sursa (job #2220560) | Cod sursa (job #1702497) | Cod sursa (job #632718)
Cod sursa(job #632718)
#include <cstdio>
using namespace std;
int n,m,s;
struct nod
{
int x;
nod *urm;
}*l[100002];
void add_begin(int x,nod *&p)
{
nod *q=new nod;
q->x=x;
q->urm=p;
p=q;
}
int coada[100002];
int viz[100002];
void bfs()
{
int start=1;
int final=1;
coada[final++]=s;
viz[s]=1;
for(int i=start;i<=final;++i)
{
for(nod *j=l[coada[i]];j;j=j->urm)
{
if(!viz[j->x])
{
coada[final++]=j->x;
viz[j->x]=1+viz[coada[i]];
}
}
start++;
}
}
void afisare()
{
for(int i=1;i<=n;i++)
{
printf("%d ",viz[i]-1);
}
}
void citire()
{
freopen("bfs.in","r",stdin);
scanf("%d %d %d",&n,&m,&s);
for(int i=0;i<m;i++)
{
int x,y;
scanf("%d %d",&x,&y);
add_begin(y,l[x]);
}
}
int main()
{
freopen("bfs.out","w",stdout);
citire();
bfs();
afisare();
return 0;
}