Pagini recente » Cod sursa (job #430448) | Clasament dorel | Cod sursa (job #105313) | Cod sursa (job #1426271) | Cod sursa (job #316059)
Cod sursa(job #316059)
#include<cstdio>
#include<vector>
#define MAXN 100001
using namespace std;
int i , j , N , M , S , x , y, coada[MAXN] , back , front = 1 , current , rez[MAXN] , dim[MAXN];
vector <int> A[MAXN];
void BFS()
{
coada[++back] = S;
rez[S] = 0;
while(back >= front) {
current = coada[front++];
for( i = 0 ; i < dim[current] ;i++)
if( rez[A[current][i]] == -1)
{
coada[++back] = A[current][i];
rez[A[current][i]] = rez[current] + 1;
}
}
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d %d %d",&N ,&M ,&S);
for( ; M -- ;) {
scanf("%d %d",&x ,&y);
A[x].push_back(y);
}
for( i = 1 ; i <= N ; i++) {
rez[i] = -1;
dim[i] = A[i].size();
}
BFS();
for( i = 1 ; i <= N ; i++)
printf("%d ",rez[i]);
return 0;
}