Pagini recente » Istoria paginii utilizator/ratiuelena | Statistici Vrabii Nicu (NicuV) | Profil AlexandraToma | Cod sursa (job #1506044) | Cod sursa (job #2425596)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#define NLIM 100001
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
vector<int> Muchii[NLIM];
int dis[NLIM], n, m, s;
queue<int> Coada;
int citire() {
f >> n >> m >> s;
for(int i=1; i<=n; i++) dis[i] = -1;
for(int i=1; i<=m; i++) {
int s, d;
f >> s >> d;
Muchii[s].push_back(d);
}
}
void BFS(int start) {
dis[start] = 0;
Coada.push(start);
while(!Coada.empty()) {
int nod = Coada.front();
Coada.pop();
for(int i=0; i<Muchii[nod].size(); i++) {
int vecin = Muchii[nod][i];
if(dis[vecin] == -1) {
dis[vecin] = dis[nod]+1;
Coada.push(vecin);
}
}
}
}
void afisare() {
for(int i=1; i<=n; i++)
g << dis[i] << " ";
g << '\n';
}
int main() {
citire();
BFS(s);
afisare();
return 0;
}