Pagini recente » Cod sursa (job #2081918) | Cod sursa (job #400843) | Cod sursa (job #1365699) | Cod sursa (job #1891175) | Cod sursa (job #2972083)
#include <fstream>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n, m, X, a[2][200001], start[100001], c[100001], d[100001];
void bfs(int nod)
{
int x, ps = 1, pi = 1;
d[nod] = 1;
c[ps] = nod;
while (ps <= pi) {
x = start[c[ps]];
while (x) {
if (d[a[0][x]] == 0) {
c[++pi] = a[0][x];
d[a[0][x]] = d[c[ps]] + 1;
}
x = a[1][x];
}
ps++;
}
}
int main()
{
int i, x, y, k = 0;
fin >> n >> m >> X;
for (i = 1; i <= m; i++) {
fin >> x >> y;
if (x != y) {
k++;
a[0][k] = y;
a[1][k] = start[x];
start[x] = k;
}
}
bfs(X);
for (i = 1; i <= n; i++)
fout << d[i] - 1 << " ";
return 0;
}