Pagini recente » Cod sursa (job #2354499) | Cod sursa (job #1368529) | Cod sursa (job #1667815) | Cod sursa (job #724340) | Cod sursa (job #2787487)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
#define maxN 100001
int n, m, start;
vector<vector<int>> adj;
vector<int> dist;
queue<int> q;
void citire() {
fin >> n >> m >> start;
adj.resize(n + 1);
for (int i = 0; i < m; i++) {
int a, b;
fin >> a >> b;
adj[a].push_back(b);
}
}
void bfs() {
dist.resize(n);
for (int i = 1; i <= n; i++)///i = 1
dist[i] = -1;
int nod = start;
q.push(nod);
dist[nod] = 0;
while (!q.empty()) {
nod = q.front();
q.pop();
for (auto i : adj[nod])
if (dist[i] == -1) {
dist[i] = dist[nod] + 1;
q.push(i);
}
}
for (int i = 1; i <= n; i++)
fout << dist[i] << " ";
}
int main() {
citire();
bfs();
return 0;
}