Pagini recente » Cod sursa (job #1948159) | Cod sursa (job #133527) | Cod sursa (job #1018012) | Cod sursa (job #2826581) | Cod sursa (job #3320353)
#include <bits/stdc++.h>
std::ifstream fin("bfs.in");
std::ofstream fout("bfs.out");
int n, m, s;
std::vector<std::vector<int>> arce;
std::vector<int> min_arce;
void BFS(int start) {
std::queue<int> q;
std::vector<bool> v(n + 1);
q.push(start);
v[start] = 1;
min_arce[start] = 0;
while(!q.empty()) {
int k = q.front();
for(int i : arce[k]) {
if(v[i] == 0) {
v[i] = 1;
q.push(i);
min_arce[i] = min_arce[k] + 1;
}
}
q.pop();
}
for(int i = 1; i <= n; ++i)
fout << min_arce[i] << ' ';
}
int main() {
fin >> n >> m >> s;
arce.resize(n + 1);
min_arce.resize(n + 1, -1);
for(int i = 0; i < m; ++i) {
int x, y;
fin >> x >> y;
arce[x].push_back(y);
}
BFS(s);
return 0;
}