Pagini recente » Cod sursa (job #1646545) | Cod sursa (job #1299208) | Rating Sarmasag Radu Victor (s_raduvictor) | Cod sursa (job #2353404) | Cod sursa (job #2172362)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
int main() {
std::ifstream in("bfs.in");
std::ofstream out("bfs.out");
int noduri, arce, start;
in >> noduri >> arce >> start;
std::vector<int> lAdiacenta[noduri+1];
std::queue<int> Q;
bool vizitat[noduri+1] = {0};
int dist[noduri+1] = {0};
for (int i = 0; i < arce; i++) {
int nod0, nod1;
in >> nod0 >> nod1;
lAdiacenta[nod0].push_back(nod1);
}
Q.push(start);
vizitat[start] = true;
while (!Q.empty()) {
int nod = Q.front();
Q.pop();
for (const int& l : lAdiacenta[nod]) {
if (!vizitat[l]) {
dist[l] = dist[nod] + 1;
Q.push(l);
vizitat[l] = true;
}
}
}
for (int i = 1; i <= noduri; i++) {
if (dist[i] == 0) dist[i] = -1;
}
dist[start] = 0;
for (int i = 1; i <= noduri; i++) {
out << dist[i] << " ";
}
}