Pagini recente » Cod sursa (job #916385) | Cod sursa (job #2370109) | Cod sursa (job #431123) | Cod sursa (job #1643810) | Cod sursa (job #2195421)
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5;
vector <int> gr[MAXN + 1];
int coada[MAXN + 1], dist[MAXN + 1], viz[MAXN + 1];
int main() {
FILE *fin, *fout;
int n, m, s, x, y, i, st, vf, fiu, tata;
fin = fopen ("bfs.in", "r");
fout = fopen ("bfs.out", "w");
fscanf (fin, "%d%d%d", &n, &m, &s);
for (i = 1; i <= m; i++) {
fscanf (fin, "%d%d", &x, &y);
gr[x].push_back(y);
}
st = 1;
vf = 1;
coada[st] = s;
dist[s] = 1;
while (st <= vf) {
tata = coada[st];
for (unsigned i = 0; i < gr[tata].size(); i++) {
fiu = gr[tata][i];
if (dist[fiu] == 0) {
coada[++vf] = fiu;
dist[fiu] = dist[tata] + 1;
}
}
st++;
}
for (i = 1; i <= n; i++)
fprintf (fout, "%d ", dist[i] - 1);
fclose (fin);
fclose (fout);
return 0;
}