Pagini recente » Cod sursa (job #2727905) | Cod sursa (job #3169710) | Cod sursa (job #2557086) | Cod sursa (job #267999) | Cod sursa (job #1669188)
#include <cstdio>
#include<vector>
#include<cstring>
using namespace std;
int l,i,n,m,st,x,y;
int g[100010],s[100010],cost[100010];
vector <int> a[100010];
void bfs(int nod)
{
int i,j;
memset(cost,-1,sizeof(cost));
l=1;
cost[nod]=0;
s[l]=nod;
for(i=1;i<=l;i++)
for(j=0;j<g[s[i]];j++)
if(cost[a[s[i]][j]]==-1)
{
l++;
s[l]=a[s[i]][j];
cost[s[l]]=cost[s[i]]+1;
}
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d%d%d",&n,&m,&st);
for(i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
a[x].push_back(y);
}
for(i=1;i<=n;i++)
g[i]=a[i].size();
bfs(st);
for(i=1;i<=n;i++)
printf("%d ",cost[i]);
printf("\n");
return 0;
}