Pagini recente » Cod sursa (job #1646730) | Cod sursa (job #1261061) | Cod sursa (job #1806877) | Cod sursa (job #599800) | Cod sursa (job #2263215)
#include <iostream>
#include <vector>
#include <cstdio>
using namespace std;
vector <int> v[200001];
int vazut[100001];
int coada[100001];
int d[100001];
int n,m,x1,x2,s;
void citire ()
{
cin>>n>>m>>s;
for (int i=0 ; i<m ; i++ )
{
cin>>x1>>x2;
v[x1].push_back(x2);
}
}
void afisare ()
{
for (int i=0 ; i<n ; i++)
{
cout<<i<<"=";
for (int j=0 ; j<v[i].size() ; j++)
cout<<v[i][j]<<" ";
cout<<endl;
}
}
int main()
{
freopen ("bfs.in","r",stdin);
freopen ("bfs.out","w",stdout);
citire ();
int st=1 , dr=2 ;
coada[1]=s;
d[s]=0;
vazut[s]=1;
while (st<dr)
{
int nod=coada[st];
vazut[nod]=1;
for (int i=0 ; i<v[nod].size();i++)
{
if (vazut[v[nod][i]]==0)
{
d[v[nod][i]]=d[nod]+1;
coada[dr]=v[nod][i];
dr++;
vazut[v[nod][i]]=1;
}
}
st++;
}
for (int i=1 ; i<=n ; i++)
if (vazut[i]!=0)
cout<<d[i]<<" ";
else
cout<<-1<<" ";
return 0;
}