Pagini recente » Cod sursa (job #2252192) | Cod sursa (job #2655241) | Cod sursa (job #53157) | Cod sursa (job #2527396) | Cod sursa (job #2502444)
#include <bits/stdc++.h>
#define NMAX 100001
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n, m, s, i, x, y, viz[NMAX];
vector<int> L[NMAX];
queue<int> c;
void BFS(int nod) {
int k;
c.push(nod);
viz[nod] = 0;
while (!c.empty()) {
k = c.front();
c.pop();
for (int &cnt : L[k]) {
if (!viz[cnt]) {
c.push(cnt);
viz[cnt] = viz[k] + 1;
}
}
}
}
int main() {
fin >> n >> m >> s;
for (i = 1; i <= m; i++) {
fin >> x >> y;
if (x != y)
L[x].push_back(y);
}
BFS(s);
for (i = 1; i <= n; i++)
if (i == s)
fout << 0 << ' ';
else {
if (viz[i] == 0)
fout << -1 << ' ';
else
fout << viz[i] << ' ';
}
return 0;
}