Pagini recente » Cod sursa (job #2035780) | Cod sursa (job #2291517) | Cod sursa (job #580017) | Cod sursa (job #2233595) | Cod sursa (job #1483803)
#include <vector>
#include <fstream>
#include <queue>
#include <cstring>
std::vector<int>g[100010];
int dist[100010];
void BFS(int& s){
std::queue<int> Q;
Q.push(s);
dist[s] = 0;
while (!Q.empty()){
int c = Q.front();
Q.pop();
for (auto i : g[c])
if (dist[i]<0){
dist[i] =dist[c]+ 1;
Q.push(i);
}
}
}
int main(){
std::ifstream f("bfs.in");
std::ofstream c("bfs.out");
std::memset(dist, -1, sizeof(dist));
int n, m, s, a, b;
f >> n >> m >> s;
for (int i = 0; i < m; ++i){ f >> a >> b; g[a].push_back(b); }
BFS(s);
for (int i = 1; i <= n; ++i) c << dist[i]<<" ";
return 0;
}