Pagini recente » Cod sursa (job #826044) | Cod sursa (job #2308693) | Cod sursa (job #1880249) | Cod sursa (job #2016534) | Cod sursa (job #2277556)
#include <fstream>
#include <vector>
using namespace std;
#define N_MAX 100005
ifstream cin{"bfs.in"};
ofstream cout{"bfs.out"};
int n, start;
vector<int> graf[N_MAX];
vector<int> d(N_MAX, -1);
int q[N_MAX];
void citeste() {
int m;
cin >> n >> m >> start;
while (m--){
int i, j;
cin >> i >> j;
graf[i].push_back(j);
}
}
void BFS() {
int stg = 0, drp = 0;
q[stg] = start;
d[start] = 0;
for (; stg <= drp; ++stg) {
int current = q[stg];
for (auto& nod : graf[current])
if (nod != start && d[nod] == -1) {
d[nod] = d[current] + 1;
q[++drp] = nod;
}
}
}
void afiseaza() {
for (int i = 1; i <= n; ++i)
cout << d[i] << ' ';
}
int main()
{
citeste();
BFS();
afiseaza();
}