Pagini recente » Profil funkydvd | Cod sursa (job #2046869) | Cod sursa (job #2904330) | Cod sursa (job #2482442) | Cod sursa (job #3270764)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
vector<vector<int>> adj(100005);
vector<int> ans(100005, -1);
void bfs(int s) {
vector<int> vis(100005,0);
queue<pair<int,int>> q;
q.push({s,1});
vis[s] = 1;
ans[s] = 0;
while (!q.empty()) {
pair<int,int> p = q.back();
for (auto i : adj[p.first]) {
if (!vis[i]) {
if (ans[i] == -1) {
ans[i] = p.second;
}
q.push({i,p.second + 1});
vis[i] = 1;
}
}
q.pop();
}
}
int main() {
int n, m , s;
fin >> n >> m >> s;
for (int i = 1 ; i <= m ; i ++) {
int x,y;
fin >> x >> y;
adj[x].push_back(y);
}
bfs(s);
for (int i = 1 ; i <= n ; i ++) {
fout << ans[i] << " ";
}
}