Pagini recente » Cod sursa (job #2847997) | Cod sursa (job #153557) | Cod sursa (job #1776297) | Cod sursa (job #20995) | Cod sursa (job #2163883)
#include <bits/stdc++.h>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
const int NMax = 1e5 + 5;
vector< vector< int > > G(NMax);
vector< bool > viz(NMax);
vector< int > distante(NMax);
void BFS(int nod) {
queue< int > q; q.push(nod);
viz[nod] = true;
distante[nod] = 0;
while(!q.empty()) {
int temp = q.front(); q.pop();
viz[temp] = true;
for(auto vecini: G[temp]) {
if(!viz[vecini]) {
viz[vecini] = true;
q.push(vecini);
distante[vecini] = distante[temp] + 1;
}
}
}
}
int main() {
int n, m, sursa; in >> n >> m >> sursa;
for(int i = 1; i <= m; ++i) {
int x, y; in >> x >> y;
G[x].push_back(y);
}
BFS(sursa);
for(int i = 1; i <= n; ++i) {
if(i != sursa && distante[i] == 0) {
out << "-1 ";
} else {
out << distante[i] << " ";
}
}
in.close(); out.close();
return 0;
}