Pagini recente » Cod sursa (job #2217807) | Cod sursa (job #638394) | Cod sursa (job #636243) | Cod sursa (job #2288485) | Cod sursa (job #1815977)
#include <bits/stdc++.h>
using namespace std;
struct Node {
int dist;
vector<int> adj;
};
Node V[100005];
int N, M, S;
int main() {
#ifndef DEBUG
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
#endif
scanf("%d %d %d", &N, &M, &S);
S--;
for (int i = 0; i < N; i++) {
V[i].dist = -1;
}
for (int i = 0; i < M; i++) {
int a, b;
scanf("%d %d", &a, &b);
a--; b--;
V[a].adj.push_back(b);
}
vector<int> q;
V[S].dist = 0;
q.push_back(S);
for (int i = 0; i < (int) q.size(); i++) {
int k = q[i];
for (int j = 0; j < (int) V[k].adj.size(); j++) {
int current = V[k].adj[j];
if (V[current].dist >= 0) continue;
V[current].dist = V[k].dist + 1;
q.push_back(current);
}
}
for (int i = 0; i < N; i++) {
printf("%d ", V[i].dist);
}
printf("\n");
}