Pagini recente » Cod sursa (job #540115) | Cod sursa (job #1833088) | Cod sursa (job #1076848) | Cod sursa (job #1239895) | Cod sursa (job #482748)
Cod sursa(job #482748)
#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], 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]++;
}
Queue[0]=1;
Queue[Queue[0]]=S;
d[S]=0;
for(i = 1; i <= Queue[0]; i++)
for(j = 0; j < v[Queue[i]]; j++)
if(d[G[Queue[i]][j]] == -1){
Queue[++Queue[0]]=G[Queue[i]][j];
d[Queue[Queue[0]]]=d[Queue[i]]+1;
}
for(i = 1; i <= N; i++)
printf("%d ", d[i]);
printf("\n");
return 0;
}