Pagini recente » Cod sursa (job #2276888) | Cod sursa (job #449275) | Cod sursa (job #1966394) | Cod sursa (job #1316251) | Cod sursa (job #2206278)
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
vector <int> L[100001];
int f[100001],lee[100001];
void bfs(int i)
{
f[i]=1;
queue <int> q;
q.push(i);
while(!q.empty())
{
int z=q.front();
q.pop();
for(int it=0; it<L[z].size(); it++)
if(!f[L[z][it]])
{
lee[L[z][it]]=lee[z]+1;
f[L[z][it]]=1;
q.push(L[z][it]);
}
}
}
int main()
{
int n,m,s,x,y,i;
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d%d%d",&n,&m,&s);
while(m--)
{
scanf("%d%d",&x,&y);
L[x].push_back(y);
}
bfs(s);
for(i=1; i<=n; i++)
if(!f[i]) printf("-1 ");
else printf("%d ",lee[i]);
return 0;
}