Pagini recente » Cod sursa (job #2867530) | Cod sursa (job #29252) | Cod sursa (job #2138482) | Cod sursa (job #2780974) | Cod sursa (job #1106155)
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
vector <long> v[100001];
vector <long>::iterator it;
queue <long> q;
long d[100001],n,m,s,i,x,y,u;
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%ld%ld%ld",&n,&m,&s);
for(i=1;i<=m;i++)
{
scanf("%ld%ld",&x,&y);
v[x].push_back(y);
}
for(i=1;i<=n;i++)
d[i]=-1;
d[s]=0;
q.push(s);
while(!q.empty())
{
u=q.front();
for(it=v[u].begin();it!=v[u].end();it++)
if(d[*it])
{
d[*it]=d[u]+1;
q.push(*it);
}
q.pop();
}
for(i=1;i<=n;i++)
printf("%ld ",d[i]);
return 0;
}