Pagini recente » Cod sursa (job #294317) | Cod sursa (job #437788) | Cod sursa (job #886734) | Cod sursa (job #1336339) | Cod sursa (job #3320352)
#include <bits/stdc++.h>
std::ifstream fin("bfs.in");
std::ofstream fout("bfs.out");
int n, m, s;
std::vector<std::vector<int>> arce;
std::vector<int> min_arce;
void BFS(int start) {
std::queue<int> q;
std::vector<bool> v(n + 1);
q.push(start);
v[start] = 1;
min_arce[start] = 0;
while(!q.empty()) {
int k = q.front();
for(int i = 1; i <= n; ++i) {
if(v[i] == 0 && arce[k][i] == 1) {
v[i] = 1;
q.push(i);
min_arce[i] = min_arce[k] + 1;
}
}
q.pop();
}
for(int i = 1; i <= n; ++i)
fout << min_arce[i] << ' ';
}
int main() {
fin >> n >> m >> s;
arce.resize(n + 1, std::vector<int>(n + 1));
min_arce.resize(n + 1, -1);
for(int i = 0; i < m; ++i) {
int x, y;
fin >> x >> y;
arce[x][y] = 1;
}
BFS(s);
return 0;
}