Pagini recente » Istoria paginii runda/newcomers_4/clasament | Cod sursa (job #1412853) | Cod sursa (job #2655133) | Cod sursa (job #59946) | Cod sursa (job #316058)
Cod sursa(job #316058)
#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];
vector <int> A[MAXN];
void BFS()
{
coada[++back] = S;
while(back >= front) {
current = coada[front++];
for( i = 0 ; i < A[current].size() ;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++)
if ( i != S) rez[i] = -1;
BFS();
for( i = 1 ; i <= N ; i++)
printf("%d ",rez[i]);
return 0;
}