Pagini recente » Monitorul de evaluare | Cod sursa (job #3306886) | Statistici Chiriac Ioana (ioana.chr9) | Profil Bagherah | Cod sursa (job #3313212)
#include <iostream>
#include <fstream>
#include <stdint.h>
#include <vector>
const int32_t MAX_N = 100000;
std::vector<int32_t> adj[MAX_N];
int32_t dists[MAX_N];
int32_t q[MAX_N];
int main() {
std::ifstream fin("bfs.in");
std::ofstream fout("bfs.out");
int32_t n, m, s;
fin >> n >> m >> s;
--s;
for(int32_t i = 0; i != m; ++i) {
int32_t x, y;
fin >> x >> y;
--x; --y;
adj[x].push_back(y);
}
for(int32_t i = 0; i != n; ++i)
dists[i] = -1;
dists[s] = 0;
q[0] = s;
for(int32_t st = 0, dr = 1; st != dr; ++st) {
int32_t node = q[st];
for(int32_t next : adj[node]) {
if(dists[next] != -1)
continue;
dists[next] = dists[node] + 1;
q[dr++] = next;
}
}
for(int32_t i = 0; i != n; ++i)
fout << dists[i] << ' ';
fin.close();
fout.close();
return 0;
}