Pagini recente » Cod sursa (job #2859648) | Cod sursa (job #1784857) | Cod sursa (job #609618) | Cod sursa (job #1737449) | Cod sursa (job #2455891)
#include <bits/stdc++.h>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
#define NMAX 100005
vector <int> v[NMAX];
queue <int> q;
int N, M, s, dis[NMAX];
void BFS () {
q.push(s);
dis[s] = 0;
while (!q.empty()) {
int node = q.front();
for (int i = 0; i < v[node].size(); i++) {
int vecin = v[node][i];
if (dis[node]+1 < dis[vecin]) {
dis[vecin] = dis[node] + 1;
q.push(vecin);
}
}
q.pop();
}
}
int main() {
for (int i = 0; i <= 100005; i++)
dis[i] = INT_MAX;
in >> N >> M >> s;
int x, y;
for (int i = 0; i < M; i++) {
in >> x >> y;
v[x].push_back(y);
}
BFS();
for (int i = 1; i <= N; i++)
if (dis[i] != INT_MAX)
out << dis[i] << " ";
else
out << -1 << " ";
}