Pagini recente » Cod sursa (job #1621697) | Cod sursa (job #2714500) | Cod sursa (job #611481) | Cod sursa (job #2385599) | Cod sursa (job #3247650)
#include <bits/stdc++.h>
void BFS(int S, std::vector<std::vector<int>> v, std::queue<int> q, std::vector<bool> viz, std::vector<int> d)
{
int nod, x;
viz[S] = true;
d[S] = 0;
q.push(S);
while (!q.empty())
{
nod = q.front();
q.pop();
for (int i = 0; i < v[nod].size(); i++)
{
x = v[nod][i];
if (!viz[x])
{
d[x] = d[nod] + 1;
q.push(x);
viz[x] = true;
}
}
}
for (int i = 1; i < d.size(); i++)
std::cout << d[i] << " ";
}
int main(){
std::ifstream fin("bfs.in");
std::ofstream fout("bfs.out");
std::vector<std::vector<int>> v;
int n, m, S, x, y;
fin >> n >> m >> S;
v.resize(n+1);
for (int i = 0; i < m; i++)
{
fin >> x >> y;
v[x].push_back(y);
}
/*
for (int i = 1; i < n+1; i++)
{
std::cout << i << " : ";
for (int j = 0; j < v[i].size(); j++)
std::cout << v[i][j] << " , ";
std::cout << "\n";
}
*/
std::queue<int> q;
std::vector<bool> viz;
std::vector<int> d;
viz.resize(n+1);
d.resize(n+1);
for (int i = 1; i < n+1; i++)
viz[i] = false;
for (int i = 1; i < n+1; i++)
d[i] = -1;
BFS(S, v, q, viz, d);
}