Pagini recente » Monitorul de evaluare | Cod sursa (job #671628) | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #3336464)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
int main(){
int n, m, nodStart;
vector<int> veciniNod;
vector<int> dist;
queue<int> coada;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
/// Citeste numarul de varfuri, numarul de arce, varful de start, arcele
fin >> n >> m >> nodStart;
/// Salveaza varfurile adiacente in veciniNod
for (int i = 0; i < m; i++) {
int nod1, nod2;
veciniiNod[nod1] = nod2;
}
/// Varfurile nevizitate au distanta -1
for (int i = 1; i <= n; i++) {
dist[i] = -1;
}
/// Insereaza varful de start
dist[nodStart] = 0;
coada.push(nodStart);
while (!empty(coada)) {
int nodCurent = coada.front();
coada.pop();
for (int nodVecin : veciniNod[]) {
if (dist[nodVecin] == -1) {
dist[nodVecin] = dist[nodCurent] + 1;
coada.push(nodVecin);
}
}
}
/// Afiseaza distantele
for (int i = 1; i < noduri; i++) {
fout << dist[i] << " ";
}
fout << "\n";
return 0;
}