Pagini recente » Cod sursa (job #3271264) | Cod sursa (job #2417430) | Cod sursa (job #1482777)
#include <iostream>
#include <fstream>
#include <queue>
#define nmax 100005
using namespace std;
queue <int> q;
vector <int> v[nmax];
int dist[nmax];
void get_data(int &n, int &s){
ifstream fin ("bfs.in");
int x, y, m;
fin >> n >> m >> s;
for(auto &x: dist) x= -1;
dist[s]= 0;
for(int i= 1; i<= m; i++){
fin >> x >> y;
v[x].push_back(y);
}
}
void bfs(int x){
q.push(x);
dist[x]= 0;
while(!q.empty()){
int cur= q.front();
q.pop();
for(auto i: v[cur])
if(dist[i]< 0){
dist[i]= dist[cur]+ 1;
q.push(i);
}
}
}
int main(){
ofstream fout ("bfs.out");
int n, s;
get_data(n ,s);
bfs(s);
for(int i= 1; i<=n; i++) fout << dist[i] << " ";
return 0;
}