Pagini recente » Cod sursa (job #2054572) | Cod sursa (job #461469) | Cod sursa (job #2279103) | Cod sursa (job #439078) | Cod sursa (job #2976724)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
string np = "bfs";
ifstream f(np + ".in");
ofstream g(np + ".out");
// #define f cin
// #define g cout
int n, m, s;
const ll INF = 1e16L;
vector<ll> d;
vector<int> adj[100003];
void bfs(int nod)
{
d.assign(n + 1, INF);
d[nod] = 0;
queue<int> q;
q.push(nod);
while (!q.empty())
{
int curr = q.front();
q.pop();
for (auto next : adj[curr])
if (d[next] > d[curr] + 1)
d[next] = d[curr] + 1,
q.push(next);
}
}
int main()
{
ios_base::sync_with_stdio(false);
f.tie(nullptr);
f >> n >> m >> s;
for (int a, b; f >> a >> b;)
adj[a].push_back(b);
bfs(s);
for (int i = 1; i <= n; i++)
if (d[i] == INF)
g << "-1 ";
else
g << d[i] << " ";
return 0;
}