Pagini recente » Cod sursa (job #2970726) | Cod sursa (job #851994) | Cod sursa (job #105394) | Cod sursa (job #2636555) | Cod sursa (job #1865124)
#include <fstream>
#include <vector>
#define DEF 100001
using namespace std;
ifstream fin ("bfs.in");
ofstream fout ("bfs.out");
int n, m, nod_X, x, y, c[DEF][2], sol[DEF];
vector <int> L[DEF];
int bfs (int nod_st) {
int u = 1, p = 1, v[DEF], first, vecin;
for (int i = 1; i <= n; i++)
v[i] = 0;
c[1][0] = nod_st;
c[1][1] = 0;
v[nod_st] = 1;
while (p <= n) {
first = c[p][0];
for (int i = 0; i < L[first].size (); i++) {
vecin = L[first][i];
if (v[vecin] == 0) {
u++;
v[vecin] = 1;
c[u][0] = vecin;
c[u][1] = c[p][1] + 1;
sol[vecin] = c[u][1];
}
}
p++;
}
return -1;
}
int main () {
fin >> n >> m >> nod_X;
for (int i = 1; i <= m; i++) {
fin >> x >> y;
L[x].push_back (y);
}
bfs (nod_X);
for (int i = 1; i <= n; i++) {
if (sol [i] == 0 && i != nod_X)
fout << "-1 ";
else
fout << sol[i] << " ";
}
}