Pagini recente » Cod sursa (job #950790) | Cod sursa (job #2842207) | Cod sursa (job #2575928) | Cod sursa (job #1201449) | Cod sursa (job #855185)
Cod sursa(job #855185)
#include <cstdio>
#include<vector>
using namespace std;
int c[100073],viz[100073];
vector <int> v[100073];
int s;
void bfs()
{
int j=1,x=1;
c[x]=s;
while (x<=j)
{
for (int i=0;i<v[c[x]].size();++i)
if (!viz[v[c[x]][i]]&& v[c[x]][i]!=c[x])
{
j++;
viz[v[c[x]][i]]=viz[c[x]]+1;
c[j]=v[c[x]][i];
}
x++;
}
}
int main()
{
int m,n,x,y;
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d%d%d",&n,&m,&s);
for (int i=0;i<m;i++)
{
scanf("%d%d",&x,&y);
v[x].push_back(y);
}
bfs();
for (int i=1;i<=n;i++)
if (viz[i] && i!=s)
printf("%d ",viz[i]);
else if (i==s)
printf("0 ");
else printf("-1 ");
}