Pagini recente » Cod sursa (job #579521) | Cod sursa (job #1767452) | Cod sursa (job #805922) | Cod sursa (job #55988) | Cod sursa (job #2748590)
#include <fstream>
#include <vector>
int N;
std::vector<int> G[100001];
int st[100000];
int viz[100001];
int cost[100001];
void bfs(int k) {
viz[k] = 1;
st[0] = k;
int i = 0;
int j = 0;
int curr;
while (i <= j) {
curr = st[i];
for (auto& nod : G[curr]) {
if (viz[nod] == 0) {
viz[nod] = 1;
st[++j] = nod;
cost[nod] = cost[curr] + 1;
}
}
++i;
}
}
int main() {
std::ifstream fin("bfs.in");
std::ofstream fout("bfs.out");
int M, S;
fin >> N >> M >> S;
int x, y;
for (int i = 0; i < M; ++i) {
fin >> x >> y;
G[x].push_back(y);
}
fin.close();
memset(cost, -1, sizeof(cost));
cost[S] = 0;
bfs(S);
for (int i = 1; i <= N; ++i) {
fout << cost[i] << ' ';
}
fout << '\n';
fout.close();
return 0;
}