Pagini recente » Cod sursa (job #1073159) | Cod sursa (job #2272289) | Cod sursa (job #3170787) | Cod sursa (job #2963579) | Cod sursa (job #482784)
Cod sursa(job #482784)
#include <cstdio>
#include <vector>
#include <string>
using namespace std;
#define MAXN 100010
int main(){
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
vector <int> G[MAXN];
int d[MAXN], Queue[MAXN], v[MAXN], Qi, i, aux, N, M, S, j;
memset(v, 0, sizeof(v));
memset(d, -1, sizeof(d));
scanf("%d%d%d", &N, &M, &S);
for(i = 1; i <= M; i++){
scanf("%d%d", &aux, &j);
G[aux].push_back(j);
v[aux]++;
}
Qi=1;
Queue[Qi]=S;
d[S]=0;
for(i = 1; i <= Qi; i++)
for(j = 0; j < v[Queue[i]]; j++)
if(d[G[Queue[i]][j]] == -1){
Queue[++Qi]=G[Queue[i]][j];
d[Queue[Qi]]=d[Queue[i]]+1;
}
for(i = 1; i <= N; i++)
printf("%d ", d[i]);
printf("\n");
return 0;
}