Pagini recente » Cod sursa (job #326300) | Cod sursa (job #1910489) | Cod sursa (job #1743296) | Cod sursa (job #2646854) | Cod sursa (job #2226695)
#include <iostream>
#include <vector>
#include <queue>
#include <list>
void BFS(const std::vector<std::vector<int>>& adj, std::vector<int>& distances, int source)
{
std::queue<int> q;
q.push(source);
while(!q.empty())
{
auto u = q.front();
q.pop();
for(auto v : adj[u - 1])
{
if(distances[v - 1] == -1)
{
q.push(v);
distances[v - 1] = distances[u - 1] + 1;
}
}
}
}
int main()
{
int N, M, S;
std::cin >> N >> M >> S;
std::vector<std::vector<int>> adj(N);
std::vector<int> distances(N, -1);
distances[S - 1] = 0;
int u, v;
for(int i = 0; i < M; i++)
{
std::cin >> u >> v;
adj[u - 1].push_back(v);
}
BFS(adj, distances, S);
for(auto d : distances)
{
std::cout << d << " ";
}
std::cout << "\n";
return 0;
}