Pagini recente » Cod sursa (job #2620582) | Cod sursa (job #959471) | Cod sursa (job #3138506) | Cod sursa (job #425502) | Cod sursa (job #1756781)
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
vector <int> adia[100010];
queue <pair <int, int>> q;
int dmin[100010];
bool trc[100010];
int main()
{
ifstream in("bfs.in");
int n, s, m, a, b;
in >> n >> m >> s;
while (m--) {
in >> a >> b;
adia[a].push_back(b);
}
q.push({ s, 0 });
while (!q.empty()) {
int t = q.front().second;
int x = q.front().first;
q.pop();
dmin[x] = t;
for (auto i : adia[x]) {
if (!trc[i]) {
trc[i] = 1;
q.push({ i, t + 1 });
}
}
}
ofstream out("bfs.out");
for (int i = 1; i <= n; i++) {
out << ((i == s) ? 0 : ((dmin[i] != 0) ? dmin[i] : -1)) << ' ';
}
return 0;
}