Pagini recente » Cod sursa (job #271829) | Monitorul de evaluare | Cod sursa (job #1101917) | Cod sursa (job #1947158) | Cod sursa (job #2646520)
#include <bits/stdc++.h>
using namespace std;
const int DIM = 100000 + 5;
ifstream fin ("bfs.in");
ofstream fout ("bfs.out");
vector < int > a[DIM];
void bfs(int k, int n)
{
queue < int > q;
vector < int > d(DIM, 2e9);
q.push(k);
d[k] = 0;
while(!q.empty()) {
int k = q.front();
q.pop();
for(auto v : a[k]) {
if(d[v] > d[k] + 1) q.push(v), d[v] = d[k] + 1;
}
}
for(int i = 1; i <= n; ++i) {
if(d[i] == 2e9) fout << "-1" << " ";
else fout << d[i] << " ";
}
}
int main()
{
int n, m, base;
fin >> n >> m >> base;
for(int i = 1; i <= m; ++i) {
int x, y;
fin >> x >> y;
a[x].push_back(y);
}
bfs(base, n);
return 0;
}