Pagini recente » Borderou de evaluare (job #499470) | Borderou de evaluare (job #1513588) | Borderou de evaluare (job #3043517) | Borderou de evaluare (job #784876) | Cod sursa (job #2501662)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
vector<int> gr[100041];
int vi[100041];
void bfs(int a){
queue<int> qu;
qu.push(a);
vi[a] = 1;
while(!qu.empty()){
a = qu.front();qu.pop();
for(auto b : gr[a]){
if(vi[b] == 0){
vi[b] = vi[a]+1;
qu.push(b);
}
}
}
}
int main(){
int n, m, s;
fin >> n >> m >> s;
for(int i = 1; i <= m; ++i){
int a, b;
fin >> a >> b;
gr[a].push_back(b);
}
bfs(s);
for(int i = 1; i <= n; ++i){
fout << vi[i]-1 << " ";
}
return 0;
}