Pagini recente » Cod sursa (job #3266489) | Cod sursa (job #3038624) | Cod sursa (job #834821) | Cod sursa (job #1609174) | Cod sursa (job #1507924)
#include <cstdio>
#include <vector>
using namespace std;
int d[100010];
int v1[100010];
int vaz[100010];
vector<int> v[100010];
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
int n,m,s,x,y,nr=0;
scanf("%d%d%d",&n,&m,&s);
for(int i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
v[x].push_back(y);
}
d[s]=0;
v1[++nr]=s;
vaz[s]=1;
for(int i=1;i<=nr;i++)
{
int nod=v1[i];
for(int j=0;j<v[nod].size();j++)
if(vaz[v[nod][j]]==0)
{
d[v[nod][j]]=d[nod]+1;
vaz[v[nod][j]]=1;
v1[++nr]=v[nod][j];
}
}
for(int i=1;i<=n;i++)
if(vaz[i]==0) printf("-1 ");
else printf("%d ",d[i]);
return 0;
}