Pagini recente » Cod sursa (job #2196534) | Cod sursa (job #1316018) | Rating Simion Iulia Cristina (iulia_cristina) | Cod sursa (job #2136284) | Cod sursa (job #2196522)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
int main() {
int x, y, N, M, S, node, i, size, level;
ifstream f("bfs.in");
// ifstream f("../input");
ofstream g("bfs.out");
f >> N >> M >> S;
vector<vector<int>> adj(N + 1);
for (i = 1; i <= M; ++i) {
f >> x >> y;
adj[x].push_back(y);
}
vector<int> visited(N + 1, -1);
queue<int> bfs;
bfs.push(S);
visited[S] = 0;
bfs.push(0);
level = 0;
while (!bfs.empty()) {
node = bfs.front();
bfs.pop();
if (node == 0) {
if (bfs.empty()) {
break;
}
level++;
bfs.push(0);
continue;
}
size = adj[node].size();
for (i = 0; i < size; ++i) {
if (visited[adj[node][i]] == -1) {
bfs.push(adj[node][i]);
visited[adj[node][i]] = level + 1;
}
}
}
for(i = 1; i <= N; ++i) {
g << visited[i] << ' ';
}
g << '\n';
g.close();
f.close();
return 0;
}