Pagini recente » Cod sursa (job #1077798) | Cod sursa (job #946852) | Cod sursa (job #1107785) | Cod sursa (job #2500864) | Cod sursa (job #3216345)
#include <bits/stdc++.h>
#define NMAX 100005
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
queue<pair<int, int>> q;
vector<int> vec[NMAX];
int s;
int gasit;
int result[NMAX];
int viz[NMAX];
void reset(){
while(!q.empty()){
q.pop();
}
}
void bfs(){
q.push({s, 1});
while(!q.empty()){
int presentNode = q.front().first;
int pas = q.front().second;
q.pop();
if(viz[presentNode] != 1){
viz[presentNode] = 1;
for(auto punct : vec[presentNode]){
if(result[punct] == 0){
result[punct] = pas;
}
q.push({punct, pas + 1});
}
}
}
}
int main() {
int n, m;
in >> n >> m >> s;
for(int i = 0;i < m;i++){
int x, y;
in >> x >> y;
if(x != y) vec[x].push_back(y);
}
bfs();
for(int i = 1;i <= n;i++){
if(i == s){
out << "0 ";
}
else if(result[i] == 0){
out << "-1 ";
}
else{
out << result[i] << ' ';
}
}
return 0;
}