Pagini recente » Borderou de evaluare (job #1382008) | Cod sursa (job #2609884) | Cod sursa (job #3245182) | Cod sursa (job #2744521) | Cod sursa (job #1965901)
#include <cstdio>
#include <vector>
#include <queue>
const int MAXN = 1e5;
std::vector <int> ad[MAXN + 1];
int ans[MAXN + 1];
int main() {
int n, m, s, u, v;
FILE *f = fopen("bfs.in", "r");
fscanf(f, "%d%d%d", &n, &m, &s);
ans[s] = 1;
for (int i = 1; i < m; ++i) {
fscanf(f, "%d%d", &u, &v);
ad[u].push_back(v);
}
fclose(f);
std::queue <int> q;
q.push(s);
while (!q.empty()) {
u = q.front();
q.pop();
for (auto v: ad[u]) {
if (!ans[v]) {
ans[v] = ans[u] + 1;
q.push(v);
}
}
}
f = fopen("bfs.out", "w");
for (int i = 1; i < n + 1; ++i) {
fprintf(f, "%d ", --ans[i]);
}
fprintf(f, "\n");
fclose(f);
return 0;
}