Pagini recente » Cod sursa (job #903397) | Cod sursa (job #3186614) | Cod sursa (job #2584751) | Cod sursa (job #894553) | Cod sursa (job #387424)
Cod sursa(job #387424)
#include<stdio.h>
#include<vector>
#define pb push_back
#define N 100005
#define INF 0x3f3f3f3f
using namespace std;
int n, m, i, x, y, fol[N], sol[N], q[3*N], p , u, w;
vector <int> a[N];
int main(){
freopen("bfs.in","r", stdin);
freopen("bfs.out","w", stdout);
scanf("%d %d %d", &n, &m, &w);
for (i = 1; i <= m; i++) scanf("%d %d", &x, &y), a[x].pb(y);
q[0] = w; fol[w] = 1;
memset (sol, INF, sizeof(sol));
sol[w] = 0;
for (p = 0, u = 0; p <= u; p++){
x = q[p];
for (int it = 0; it < a[x].size(); it++)
if (sol[x] + 1 < sol[a[x][it]]){
sol[a[x][it]] = sol[x] + 1;
q[++u] = a[x][it];
}
}
for (i = 1; i <= n; i++)
printf("%d ", (sol[i] == INF ? -1 : sol[i]));
return 0;
}