Pagini recente » Cod sursa (job #2312746) | Cod sursa (job #2640935) | Cod sursa (job #775074) | Cod sursa (job #95572) | Cod sursa (job #2783347)
#include <cstdio>
#include <vector>
#include <queue>
void BFS(std::vector<int>& dists, const std::vector<std::vector<int>>& list, int start)
{
std::queue<int> q;
q.push(start);
dists[start] = 0;
while(!q.empty())
{
const auto node = q.front();
q.pop();
for(int v : list[node])
{
if(dists[v] == -1)
{
q.push(v);
dists[v] = dists[node] + 1;
}
}
}
}
int main()
{
std::freopen("bfs.in", "r", stdin);
std::freopen("bfs.out", "w", stdout);
int n, m, s;
std::scanf("%d %d %d", &n, &m, &s);
std::vector<std::vector<int>> list(n + 1);
std::vector<int> dists(n + 1, -1);
for(int i = 0; i < m; ++i)
{
int x, y;
std::scanf("%d %d", &x, &y);
list[x].push_back(y);
}
BFS(dists, list, s);
for(int node = 1; node <= n; ++node)
{
printf("%d ", dists[node]);
}
puts("");
}