Pagini recente » Cod sursa (job #2425062) | Cod sursa (job #1456106) | Cod sursa (job #2543737) | Cod sursa (job #2509217) | Cod sursa (job #1895262)
#include <fstream>
#include <vector>
#include <queue>
#include <cstring>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
const int NM = 100005;
int N, E, S, from, to, edge, crt_node, i;
int cost[NM];
queue <int> Q;
vector <int> G[NM];
int main()
{
in >> N >> E >> S;
for (edge = 1; edge <= E; ++edge) {
in >> from >> to;
G[from].push_back(to);
}
memset(cost, -1, sizeof cost);
cost[S] = 0;
Q.push(S);
while (!Q.empty()) {
crt_node = Q.front();
Q.pop();
for (auto &it: G[crt_node]) {
if (cost[it] == -1) {
cost[it] = cost[crt_node]+1;
Q.push(it);
}
}
}
for (i = 1; i <= N; ++i) {
out << cost[i] << ' ';
}
return 0;
}