Pagini recente » Cod sursa (job #3367114) | Cod sursa (job #3367094) | Cod sursa (job #3367364) | Cod sursa (job #3367391) | Cod sursa (job #3367125)
#include <fstream>
#include <deque>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int main(){
int N, M, S;
fin >> N >> M >> S;
int m[N+1][N+1];
int n1, n2;
for (int i = 0; i < M; i++) {
fin >> n1 >> n2;
m[n1][n2] = 1;
}
int bfs[N+1];
for (int i = 1; i <= N; i++)
bfs[i] = -1;
deque<pair<int, int>> q;
q.push_back({S, 0});
int visited[N+1] = {0};
visited[S] = 1;
bfs[S] = 0;
int nodCurent;
int nrArce;
while (!q.empty()) {
nodCurent = q.front().first;
nrArce = q.front().second;
q.pop_front();
for (int i = 1; i <= N; i++){
if (!visited[i] && m[nodCurent][i] == 1){
q.push_back({i, nrArce + 1});
bfs[i] = nrArce + 1;
}
}
}
for (int i = 1; i <= N; i++) {
fout << bfs[i] << " ";
}
return 0;
}