Pagini recente » Cod sursa (job #743810) | Cod sursa (job #2181762) | Cod sursa (job #2241226) | Cod sursa (job #1697793) | Cod sursa (job #2199199)
#include <bits/stdc++.h>
using namespace std;
ifstream f ("bfs.in");
ofstream g ("bfs.out");
vector <int> adiac[100005];
queue <int> coada;
int vizitat[100005];
int cost[100005];
int sizes[100005];
/// ///////////////////////////////////////////////////
int nNoduri;
int nMuchii;
int s;
void citire();
void afisareDistante() {
for (int i = 1; i <= nNoduri; ++i) {
g << cost[i] << ' ';
}
}
void rezolvare() {
int nCurent;
coada.push(s);
vizitat[s] = 1;
cost[s] = 0;
while(!coada.empty()) {
nCurent = coada.front();
coada.pop();
for (int i = 0; i < adiac[nCurent].size(); ++i) {
if (vizitat[adiac[nCurent][i]] == 0) {
coada.push(adiac[nCurent][i]);
vizitat[adiac[nCurent][i]] = 1;
cost[adiac[nCurent][i]] = cost[nCurent] + 1;
}
}
// coada.pop();
}
afisareDistante();
}
int main()
{
citire();
rezolvare();
return 0;
}
void citire() {
int pr, sec;
f >> nNoduri >> nMuchii;
f >> s;
for (int i = 1; i <= nMuchii; ++i) {
f >> pr >> sec;
adiac[pr].push_back(sec);
}
for (int i = 1; i <= nNoduri; ++i) {
sizes[i] = adiac[i].size();
}
for (int i = 1; i <= nNoduri; ++i) {
cost[i] = -1;
}
}