Pagini recente » Cod sursa (job #399106) | Cod sursa (job #2755142) | Cod sursa (job #2616576) | Cod sursa (job #1959466) | Cod sursa (job #2664398)
#include <iostream>
#include <vector>
#include <queue>
#include <fstream>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int n, m, s, d[100005],a,b;
vector <int> vect[100005];
queue <int> que;
void bfs(int start) {
que.push(start);
while (!que.empty())
{
int k = que.front();
que.pop();
for (int i = 0; i < vect[k].size(); i++)
if (d[vect[k][i]] == 0)
if(vect[k][i] != start)
{
que.push(vect[k][i]);
d[vect[k][i]] = d[k] + 1;
}
}
}
int main()
{
f >> n >> m >> s;
for (int i = 1; i <= m; i++)
{
f >> a >> b;
vect[a].push_back(b);
}
bfs(s);
for (int i = 1; i <= n; i++)
if (d[i] == 0 && i != s)
g << -1 << " ";
else
g << d[i] << " ";
}