Pagini recente » Cod sursa (job #433258) | Cod sursa (job #2881758) | Cod sursa (job #2863172) | Cod sursa (job #3235535) | Cod sursa (job #601823)
Cod sursa(job #601823)
#include<cstdio>
#include<vector>
#define maxn 100010
using namespace std;
vector <int> A[maxn];
int Cost[maxn],Grad[maxn],C[maxn];
int n,m,l,start;
void bfs(int nod)
{
int i,j;
memset(Cost, -1, sizeof(Cost));
Cost[nod]=0;
l=1;
C[l]=nod;
for(i=1;i<=l;i++)
for(j=0;j<Grad[C[i]];j++)
if(Cost[A[C[i]][j]]==-1)
{
C[++l]=A[C[i]][j];
Cost[C[l]]=Cost[C[i]]+1;
}
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
int x,y;
scanf("%d %d %d\n",&n,&m,&start);
for(int i=1;i<=m;i++)
{
scanf("%d %d",&x,&y);
A[x].push_back(y);
}
for(int i=1;i<=n;i++)
Grad[i]=A[i].size();
bfs(start);
for(int i=1;i<=n;i++)
printf("%d ",Cost[i]);
}