Pagini recente » Cod sursa (job #1548728) | Cod sursa (job #129299) | Cod sursa (job #936723) | Cod sursa (job #2730564) | Cod sursa (job #529898)
Cod sursa(job #529898)
#include<cstdio>
#include<vector>
using namespace std;
vector<int> a[100010];
int cost[100010],g[100010],s[100010];
int n,m,l,start;
void bfs (int nod)
{
int i,j;
for (i=1; i<=n; i++)
cost[i]=-1;
l=1; cost[nod]=0; s[1]=nod;
for (i=1; i<=l; i++)
for (j=0; j<g[s[i]]; j++)
if (cost[a[s[i]][j]]==-1)
{
s[++l]=a[s[i]][j];
cost[s[l]]=cost[s[i]]+1;
}
}
int main ()
{
int i,x,y;
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d %d %d",&n,&m,&start);
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(start);
for (i=1; i<=n; i++)
printf("%d ",cost[i]);
printf("\n");
return 0;
}