Pagini recente » Cod sursa (job #3367327) | Cod sursa (job #3367178) | Cod sursa (job #3367112) | Cod sursa (job #3367174) | Cod sursa (job #3367063)
#include <bits/stdc++.h>
void BFS(int k, const std::vector<std::vector<int>>& L, std::vector<int>& viz, std::vector<int>& dis)
{
std::queue<int> q;
viz[k] = 1;
dis[k] = 0;
q.push(k);
while(!q.empty())
{
int x = q.front();
q.pop();
for(const auto& w: L[x])
if(viz[w] == 0)
{
dis[w] = dis[x] + 1;
viz[w] = 1;
q.push(w);
}
}
}
int main()
{
std::ifstream fin("bfs.in");
std::ofstream fout("bfs.out");
int N{}, M{}, x, y, P;
fin >> N >> M >> P;
std::vector<std::vector<int>> L(N+1);
std::vector<int> viz(N+1, 0);
std::vector<int> dis(N+1, 0);
for(int i = 0; i < M; i++)
{
fin >> x >> y;
L[x].push_back(y);
}
BFS(P, L, viz, dis);
for(int i = 1; i <= N; i++)
if(dis[i] == 0 && i != P) fout << "-1 ";
else fout << dis[i] << " ";
fin.close();
fout.close();
return 0;
}