Pagini recente » Cod sursa (job #2143691) | Cod sursa (job #632344) | Cod sursa (job #1550172) | Cod sursa (job #2743390) | Cod sursa (job #2844891)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream in("test.in");
ofstream out("test.out");
vector <int> v[100005];
int lungimi[100005]; // lungimea min pana la i
bool vizitat[100005];
int n, m, s;
void bfs(int s) {
queue <int> q;
lungimi[s] = 0;
q.push(s);
while (!q.empty()) {
int nod = q.front();
vizitat[nod] = 1;
for (int i = 0; i < v[nod].size(); i++) {
if (!vizitat[v[nod][i]]) {
q.push(v[nod][i]);
lungimi[v[nod][i]] = lungimi[nod] + 1;
}
}
q.pop();
}
}
int main() {
in >> n >> m >> s;
for (int i = 1; i <= m; i++) {
int x, y;
in >> x >> y;
v[x].push_back(y);
}
bfs(s);
for (int i = 1; i <= n; i++) {
if (lungimi[i] or i == s)
cout << lungimi[i] << " ";
else
cout << "-1 ";
}
}