Pagini recente » Cod sursa (job #1901075) | Cod sursa (job #2788391) | preoni-cl._5-8 | Cod sursa (job #2865299) | Cod sursa (job #2665950)
#include<fstream>
#include<vector>
#include<queue>
#define NMAX 100001
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
vector<unsigned int> adjList[NMAX];
bool isVisited[NMAX];
int cost[NMAX];
void bfs(unsigned int startNode) {
queue<unsigned int> q;
q.push(startNode);
isVisited[startNode] = true;
while (!q.empty()) {
int currentNode = q.front();
q.pop();
for (const auto& node : adjList[currentNode]) {
if (!isVisited[node]) {
isVisited[node] = true;
q.push(node);
cost[node] = cost[currentNode] + 1;
}
}
}
}
void printResult(unsigned int N) {
for (unsigned int i = 1; i <= N; ++i) {
out << (isVisited[i] ? cost[i] : -1) << ' ';
}
}
int main() {
unsigned int N, M, S;
in >> N >> M >> S;
for (unsigned int i = 0; i < M; ++i) {
unsigned int startNode, endNode;
in >> startNode >> endNode;
adjList[startNode].push_back(endNode);
}
bfs(S);
printResult(N);
return 0;
}