Pagini recente » Cod sursa (job #877732) | Cod sursa (job #3310954) | Cod sursa (job #662896) | Cod sursa (job #1011356) | Cod sursa (job #2378559)
#include <iostream>
#include <queue>
#include <fstream>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n,v[100001],k=1;
queue <int> m[100001];
int coada[100001],d[100001];
void BFS(int x)
{
int st=1,dr=1,vecin;
coada[1]=x;
v[x]=1;
d[x]=0;
while(st<=dr)
{
x=coada[st];
while(!m[x].empty())
{
vecin=m[x].front();
if(v[vecin]==0)
{
v[vecin]=1;
d[vecin]=d[x]+1;
k++;dr++;
coada[k]=vecin;
}
m[x].pop();
}
st++;
}
}
int main()
{
int mu,x,i,a,b;
fin>>n>>mu>>x;
for(i=1;i<=n;i++)
d[i]=-1;
for(i=1;i<=mu;i++)
{
fin>>a>>b;
m[a].push(b);
}
BFS(x);
for(i=1;i<=n;i++)
fout<<d[i]<<" ";
return 0;
}