Pagini recente » Cod sursa (job #2727212) | Cod sursa (job #1184904) | Cod sursa (job #1969003) | Cod sursa (job #2896017) | Cod sursa (job #2762963)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("bfs.in");
ofstream fout("bfs.out");
int n,m,tata[100002],coada[100002],nr;
vector<int>v[100002];
bool viz[100002];
void bfs (int node)
{
viz[node]=1;
int st=1,dr=1;
coada[1]=node;
while (st<=dr)
{
int nod=coada[st];
for (auto x:v[nod])
if (viz[x]==0)
{
viz[x]=1;
coada[++dr]=x;
tata[x]=nod;
}
++st;
}
}
int numara (int k,int dest)
{
if (k==dest)
return 0;
else return 1+numara(tata[k],dest);
}
int main()
{
int x,y,i,k;
fin>>n>>m>>k;
for (i=1;i<=m;i++)
{
fin>>x>>y;
v[x].push_back(y);
}
bfs (k);
for (i=1;i<=n;++i)
{
if (viz[i]==0)
fout<<-1<<' ';
else fout<<numara(i,k)<<' ';
}
return 0;
}