Pagini recente » Cod sursa (job #1532062) | Cod sursa (job #388598) | Cod sursa (job #910474) | Cod sursa (job #1655021) | Cod sursa (job #2426679)
#include<iostream>
#include<fstream>
#include<list>
#include<queue>
using namespace std;
unsigned int n, m, start;
list<unsigned int> listaAdj[100001];
int nivele[100001];
queue<unsigned int> coada;
void citire() {
ifstream in("bfs.in");
in >> n >> m >> start;
for (int i = 0; i < m; i++) {
unsigned int x, y;
in >> x >> y;
listaAdj[x].push_back(y);
}
for (int i = 1; i <= n; i++)
nivele[i] = -1;
in.close();
}
void bfs(unsigned int x) {
unsigned int nivel = 0;
coada.push(x);
nivele[x] = 0;
while (!coada.empty()) {
unsigned int nod = coada.front();
coada.pop();
for (unsigned int subnod : listaAdj[nod])
if (nivele[subnod] < 0) {
coada.push(subnod);
nivele[subnod] = nivele[nod] + 1;
}
}
}
int main() {
citire();
bfs(start);
ofstream out("bfs.out");
for (unsigned int i = 1; i <= n; i++)
out << nivele[i] << ' ';
out.close();
return 0;
}