Pagini recente » Cod sursa (job #2767555) | Cod sursa (job #249999) | Cod sursa (job #249382) | Cod sursa (job #986162) | Cod sursa (job #2157149)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
const int nMax = 100001;
int n, s;
int dp[nMax];
vector <int> L[nMax];
queue <int> q;
void Read() {
int m, i, x, y;
fin >> n >> m >> s;
for (i = 1; i <= m; i++) {
fin >> x >> y;
L[x].push_back(y);
}
fin.close();
}
void BFS(int nod) {
for (int i = 1; i <= n; i++) dp[i] = nMax;
dp[nod] = 0;
q.push(nod);
while (!q.empty()) {
nod = q.front();
q.pop();
for (auto it : L[nod]) {
if (dp[it] > dp[nod] + 1) {
dp[it] = dp[nod] + 1;
q.push(it);
}
}
}
}
void Solve() {
BFS(s);
for (int i = 1; i <= n; i++) {
if (dp[i] == nMax) dp[i] = -1;
fout << dp[i] << " ";
}
fout << "\n";
fout.close();
}
int main()
{
Read();
Solve();
return 0;
}