Pagini recente » Cod sursa (job #2418504) | Cod sursa (job #1440277) | Cod sursa (job #2666708) | Cod sursa (job #2028939) | Cod sursa (job #3246653)
#include <fstream>
#include <vector>
#include <unordered_map>
#include <queue>
#include <iostream>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int N, M, S;
unordered_map<int, vector<int>> graph;
int bfs(int source, int destination){
if(source == destination){
return 0;
}
queue<pair<int,int>> q;
q.push(make_pair(source, 0));
while(!q.empty()){
int curr = q.front().first;
int curr_len = q.front().second;
q.pop();
for(auto v : graph[curr]){
if (curr == destination) {
return curr_len + 1;
}
pair p = make_pair(v, curr_len + 1);
q.push(p);
}
}
return -1;
}
int main(){
fin >> N >> M >> S;
for(int i = 0; i < M; i++){
int x, y;
fin >> x >> y;
graph[x].push_back(y);
}
for(int i = 1; i <= N; i++){
fout << bfs(S, i) << " ";
}
return 0;
}