Pagini recente » Cod sursa (job #1363654) | Cod sursa (job #1368139) | Cod sursa (job #1494871) | Cod sursa (job #1606216) | Cod sursa (job #540039)
Cod sursa(job #540039)
#include <stdio.h>
#include <vector>
using namespace std;
vector <int> e[100001];
bool v[100001];
int q[100001],sol[100001],n,m,s,i,a,x,y,l,r;
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d%d%d",&n,&m,&s);
for (i=1;i<=m;++i)
{
scanf("%d%d",&x,&y);
e[x].push_back(y);
}
v[s]=1;q[1]=s;r=1;
for (l=1;l<=r;++l)
{
a=e[q[l]].size();
for (i=0;i<a;++i)
if (!v[e[q[l]][i]])
{
++r;
q[r]=e[q[l]][i];
v[e[q[l]][i]]=1;
sol[e[q[l]][i]]=sol[q[l]]+1;
}
}
for (i=1;i<=n;++i)
if ((i!=s)&&(!sol[i]))
sol[i]=-1;
for (i=1;i<=n;++i)
printf("%d ",sol[i]);
return 0;
}