Pagini recente » Cod sursa (job #2839673) | Cod sursa (job #1594082) | Cod sursa (job #2281098) | Cod sursa (job #3271333) | Cod sursa (job #3249620)
#include<vector>
#include<fstream>
#include<queue>
using namespace std;
int n, m, s;
vector<vector<int>> adj(1005);
int bfs(int s, int target, vector<vector<int>> &adj) {
vector<int> visited(1005, 0);
if(s == target) {
return 0;
}
queue<pair<int,int>> q;
q.push({s,1});
visited[s] = true;
while(!q.empty()) {
auto [node,dist] = q.front();
q.pop();
for(auto neighbour : adj[node]) {
if(!visited[neighbour]) {
if(neighbour == target) {
return dist;
}
q.push({neighbour,dist + 1});
visited[neighbour] = true;
}
}
dist ++;
}
return -1;
}
int main() {
ifstream fin("bfs.in");
ofstream fout("bfs.out");
fin >> n >> m >> s;
for(int i = 1 ; i<=m ; i++) {
int x, y;
fin >> x >> y;
adj[x].push_back(y);
}
for(int i = 1 ; i <= n ; i++) {
fout << bfs(s, i, adj) << " ";
}
}