Pagini recente » Cod sursa (job #2520642) | Cod sursa (job #2268339) | Cod sursa (job #1433365) | Cod sursa (job #719434) | Cod sursa (job #3032537)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
const int N = 1e5;
int n_vf , n_edgs , s , dist[N + 1];
bool visited[N + 1];
vector<int> m[N + 1];
queue<int> Q;
void bfs(int x){
visited[x] = true;
dist[s] = 0;
Q.push(x);
while(!Q.empty()){
int start = Q.front();
Q.pop();
for(int y = 0 ; y < m[start].size() ; y++){
if(!visited[m[start][y]]){
Q.push(m[start][y]);
visited[m[start][y]] = true;
dist[m[start][y]] = dist[start] + 1;
}
}
}
}
int main(){
in >> n_vf >> n_edgs >> s;
for(int i = 1 ; i <= n_edgs ; i++){
int x , y;
in >> x >> y;
m[x].push_back(y);
}
for(int i = 1 ; i <= n_vf ; i++){
dist[i] = -1;
}
bfs(s);
for(int i = 1 ; i <= n_vf ; i++){
out << dist[i] << ' ';
}
}