Pagini recente » Cod sursa (job #1375545) | Cod sursa (job #2190351) | Cod sursa (job #2632438) | Cod sursa (job #2806532) | Cod sursa (job #3277930)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <string>
#include <sstream>
using namespace std;
int N, M, S;
vector<vector<int>> adjList(N + 1);
vector dist(N + 1, -1);
void solve() {
dist[S] = 0;
queue<int> bfsQueue;
bfsQueue.push(S);
while (!bfsQueue.empty()) {
int current = bfsQueue.front();
bfsQueue.pop();
for (int neigh : adjList[current]) {
if (dist[neigh] == -1) {
bfsQueue.push(neigh);
dist[neigh] = dist[current] + 1;
}
}
}
}
void readInput() {
ifstream input("bfs.in");
input >> N >> M >> S;
for (int i = 0; i < M; ++i) {
int from, to;
input >> from >> to;
adjList[from].push_back(to);
}
input.close();
}
void writeOutput() {
ofstream output("bfs.out");
for (int i = 1; i <= N; ++i) {
output << dist[i] << " ";
}
output.close();
}
int main() {
readInput();
solve();
writeOutput();
return 0;
}