Pagini recente » Cod sursa (job #858314) | Cod sursa (job #1130726) | Cod sursa (job #2840332) | Cod sursa (job #203628) | Cod sursa (job #3124138)
#include<iostream>
#include<fstream>
#include<vector>
#include<queue>
using namespace std;
int N, M, S;
int main() {
ifstream f("bfs.in");
ofstream g("bfs.out");
f >> N >> M >> S;
vector<vector<int>> adj(N+1);
int u, v;
for (int i = 0; i < M; i++) {
f >> u >> v;
adj[u].push_back(v);
}
vector<int> dist(N+1, -1);
vector<bool> vis(N+1, false);
queue<int> q;
q.push(S);
dist[S] = 0;
while (!q.empty()) {
u = q.front();
q.pop();
for (int nod: adj[u]) {
if (!vis[nod]) {
vis[nod] = true;
if (nod != u)
dist[nod] = dist[u]+1;
q.push(nod);
}
}
}
for (int u = 1; u <= N; u++) {
g << dist[u] << " ";
}
f.close();
g.close();
return 0;
}