Pagini recente » Cod sursa (job #262931) | Cod sursa (job #1464317) | Cod sursa (job #1307362) | Cod sursa (job #358774) | Cod sursa (job #912353)
Cod sursa(job #912353)
#include <stdio.h>
#include <vector>
#include <queue>
#define nmax 100001
using namespace std;
vector <int> G[nmax];
queue <int> q;
int cost[nmax];
int main() {
freopen ("bfs.in", "r", stdin);
freopen ("bfs.out", "w", stdout);
int N, M, S, a, b, i, x, m;
scanf ("%d %d %d", &N, &M, &S);
for (i = 1; i <= M; ++i) {
scanf ("%d %d", &a, &b);
G[a].push_back(b);
}
for (i = 1; i <= N; ++i) cost[i] = -1;
q.push(S);
cost[S] = 0;
while (!q.empty()) {
x = q.front();
q.pop();
m = G[x].size();
for (i = 0; i < m; ++i) {
if (cost[G[x][i]] == - 1) {
cost[G[x][i]] = cost[x] + 1;
q.push(G[x][i]);
}
}
}
for (i = 1; i <= N; ++i) printf ("%d ", cost[i]);
return 0;
}