Pagini recente » Cod sursa (job #128753) | Cod sursa (job #1912855) | Cod sursa (job #1918671) | Cod sursa (job #718170) | Cod sursa (job #3123821)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <iterator>
std::ifstream fin("bfs.in");
std::ofstream fout("bfs.out");
int main() {
int n, m, s;
fin >> n >> m >> s;
s--;
std::vector<std::vector<int>> adj(n);
while(m--) {
int a, b;
fin >> a >> b;
a--, b--;
adj[a].push_back(b);
}
std::vector<int> distances(n, -1);
std::queue<int> q;
q.push(s);
distances[s] = 0;
while (!q.empty()) {
int node = q.front();
q.pop();
for(auto next : adj[node]) {
if(distances[next] != -1)
continue;
distances[next] = distances[node]+1;
q.push(next);
}
}
std::copy(distances.begin(), distances.end(),
std::ostream_iterator<int>(fout, " "));
return 0;
}