Pagini recente » Cod sursa (job #2071299) | Cod sursa (job #1783216) | Cod sursa (job #753816) | Cod sursa (job #917482) | Cod sursa (job #2677786)
//ALEXANDRU MICLEA
#include <vector>
#include <algorithm>
#include <string>
#include <string.h>
#include <cstring>
#include <queue>
#include <map>
#include <set>
#include <unordered_map>
#include <time.h>
#include <iomanip>
#include <deque>
#include <math.h>
#include <cmath>
#include <assert.h>
#include <stack>
#include <bitset>
#include <random>
#include <chrono>
#include <assert.h>
using namespace std;
#include <fstream>
//ifstream cin("input.in"); ofstream cout("output.out");
ifstream cin("bfs.in"); ofstream cout("bfs.out");
//VARIABLES
int lv[100005];
vector <int> gr[100005];
int ans[100005];
queue <pair <int, int> > q;
//FUNCTIONS
void bfs(int nod) {
q.push({nod, 0});
ans[nod] = 0;
while (!q.empty()) {
int pos = q.front().first;
int lv = q.front().second;
q.pop();
for (auto& x : gr[pos]) {
if (ans[x] == 1e9) {
q.push({ x, lv + 1 });
ans[x] = lv + 1;
}
}
}
}
//MAIN
int main() {
int n, m, nod;
cin >> n >> m >> nod;
for (int i = 1; i <= n; i++) ans[i] = 1e9;
for (int i = 1; i <= m; i++) {
int x, y;
cin >> x >> y;
gr[x].push_back(y);
}
bfs(nod);
for (int i = 1; i <= n; i++) {
if (ans[i] == 1e9) cout << -1 << " ";
else cout << ans[i] << " ";
}
return 0;
}