Pagini recente » Cod sursa (job #1381849) | Cod sursa (job #1737502) | Cod sursa (job #2023629) | Cod sursa (job #337524) | Cod sursa (job #229439)
Cod sursa(job #229439)
#include <cstdio>
#include <algorithm>
#include <vector>
#include <queue>
using namespace std;
vector<vector<int> > v;
queue<int> Q;
int BFS[100001];
int main() {
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
int n, m, s;
scanf("%d%d%d", &n, &m, &s);
v.resize(n+3);
while (m--) {
int a, b;
scanf("%d%d", &a, &b);
v[a].push_back(b);
}
BFS[s] = 1;
Q.push(s);
while (!Q.empty()) {
int top = Q.front(); Q.pop();
for (int i = 0; i < v[top].size(); ++i) if (BFS[v[top][i]] == 0) {
int nod = v[top][i];
BFS[nod] = BFS[top] + 1;
Q.push(nod);
}
}
for (int i = 1; i <= n; ++i) printf("%d ", BFS[i]-1);
return 0;
}