Pagini recente » Cod sursa (job #984515) | Cod sursa (job #3322930) | Monitorul de evaluare | Cod sursa (job #984527) | Cod sursa (job #3334995)
#include <fstream>
#include <vector>
#include <queue>
int main()
{
int n, m, s;
std::vector<std::vector<int>> la;
std::ifstream in("bfs.in");
in >> n >> m >> s;
s --;
for (int i = 0; i < n; i ++) {
la.push_back(std::vector<int>());
}
for (int i = 0; i < m; i ++) {
int x, y;
in >> x >> y;
x --;
y --;
la[x].push_back(y);
}
in.close();
std::vector<int> d;
for(int i = 0; i < n; i ++) {
d.push_back(-1);
}
std::queue<int> q;
q.push(s);
d[s] = 0;
while (!q.empty()) {
int act = q.front();
q.pop();
for (auto vec: la[act]) {
if (d[vec] == -1) {
d[vec] = d[act] + 1;
q.push(vec);
}
}
}
std::ofstream out("bfs.out");
for (auto r: d) {
out << r << ' ';
}
out.close();
return 0;
}