Pagini recente » Cod sursa (job #2199429) | Cod sursa (job #2935812) | Cod sursa (job #1273272) | Cod sursa (job #2857624) | Cod sursa (job #2837078)
#include <fstream>
#include <deque>
#include <vector>
using namespace std;
#define ll long long
ifstream fin("bfs.in");
ofstream fout("bfs.out");
struct element {
bool seen = false;
vector <ll> sz;
ll step = -1;
};
ll N, M, S;
int main(){
fin >> N >> M >> S;
vector <element> x(N+1);
for(ll a, b, i = 1; i <= M; ++i){
fin >> a >> b;
x[a].sz.push_back(b);
//x[b].sz.push_back(a);
}
deque <ll> v;
x[S].seen = true;
x[S].step = 0;
v.push_back(S);
while(!v.empty()){
int act = v[0];
v.pop_front();
for(auto& i : x[act].sz)
if(!x[i].seen){
x[i].seen = true;
x[i].step = x[act].step + 1;
v.push_back(i);
}
}
for(ll i = 1; i <= N; ++i){
fout << x[i].step << ' ';
}
return 0;
}