Pagini recente » Cod sursa (job #1273185) | Cod sursa (job #2491269) | Cod sursa (job #3178775) | Cod sursa (job #2235625) | Cod sursa (job #1723229)
#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
vector<int>f[100001];
int k,i,m,x,j,ct;
queue<int>q;
bool g[100001];
int h[100001];
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d%d%d",&x,&m,&ct);
for(k=1;k<=m;k++)
{
scanf("%d%d",&i,&j);
f[i].push_back(j);
}
for(q.push(ct),g[ct]=1,h[ct]=0;!q.empty();q.pop())
{
i=q.front();
for(k=0;k<f[i].size();k++)
{
if(g[f[i][k]]==0)
{
g[f[i][k]]=1;
q.push(f[i][k]);
h[f[i][k]]=h[i]+1;
}
}
}
for(k=1;k<=x;k++)
{
if(h[k]==0&&k!=ct)
printf("-1 ");
else
printf("%d ",h[k]);
}
return 0;
}