Pagini recente » Cod sursa (job #1620521) | Cod sursa (job #2946851) | Cod sursa (job #597265) | Cod sursa (job #2719558) | Cod sursa (job #2528288)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("bfs.in");
ofstream fout ("bfs.out");
struct nod {int info;nod *urm;};
nod *lis[100010],*q;
int n,a,b,k,v[100010],c[100010],ci,cs,m,dist[100010],vv[100010];
void addnod(int a, int b)
{
q=new nod;
q->urm=lis[a];
q->info=b;
lis[a]=q;
}
int main()
{
fin>>n>>m>>k;
for(;m;m--)
{
fin>>a>>b;
if(a!=b)
addnod(a,b);
}
c[1]=k;
v[k]=1;
dist[1]=0;
ci=cs=1;
while(cs<=ci)
{
///c[cs]
q=lis[c[cs]];
while(q!=NULL)
{
if(v[q->info]==0)
{
c[++ci]=q->info;
v[q->info]=1;
dist[ci]=dist[cs]+1;
vv[q->info]=dist[ci];
}
q=q->urm;
}
cs++;
}
for(int i=1;i<=n;i++)
{
if(vv[i]==0)
{
if(i==k)
fout<<0<<" ";
else
fout<<-1<<" ";
}
else
fout<<vv[i]<<" ";
}
return 0;
}