Pagini recente » Cod sursa (job #1903534) | Cod sursa (job #235120) | Cod sursa (job #2319195) | Cod sursa (job #146360) | Cod sursa (job #2451117)
#include <fstream>
#include <vector>
#include <queue>
int main()
{
std::vector<std::vector<size_t>> graph(100000 + 1, std::vector<size_t>());
std::vector<int> distance(100000 + 1, -1);
size_t N, M, S, x, y;
std::ifstream fin("bfs.in");
std::ofstream fout("bfs.out");
fin >> N >> M >> S;
while(fin >> x >> y) graph[x].push_back(y);
std::queue<size_t> q;
q.push(S);
distance[S] = 0;
while(!q.empty())
{
size_t current_node = q.front();
q.pop();
for(std::vector<size_t>::iterator it = graph[current_node].begin(); it < graph[current_node].end(); it++)
{
if(distance[*it] == -1)
{
distance[*it] = distance[current_node] + 1;
q.push(*it);
}
}
}
for(size_t i = 1; i <= N; i++) fout << distance[i] << ' ';
}