Pagini recente » Cod sursa (job #2053113) | Rating Florin Diaconescu (Florin09) | Cod sursa (job #554134) | Cod sursa (job #1797084) | Cod sursa (job #2767244)
#include <iostream>
#include <fstream>
#include <list>
#include <queue>
const int NMAX = 100002;
std::vector<int> adj[NMAX];
int distance[NMAX];
std::ifstream fin("bfs.in");
std::ofstream fout("bfs.out");
void bfs(int source) {
std::queue<int> queue;
distance[source] = 1;
queue.push(source);
while (!queue.empty()) {
int front = queue.front();
queue.pop();
for (auto it = adj[front].begin(); it != adj[front].end(); ++it) {
if (distance[*it] == 0) {
distance[*it] = distance[front] + 1;
queue.push(*it);
}
}
}
}
int main(void) {
int n, m ,s;
fin >> n >> m >> s;
for (int i = 1; i <= m; ++i) {
int u, v;
fin >> u >> v;
adj[u].push_back(v);
}
bfs(s);
for (int i = 1; i <= n; ++i) {
fout << distance[i] - 1 << " ";
}
fin.clear();
fout.close();
return 0;
}