Pagini recente » Cod sursa (job #830329) | Cod sursa (job #1096957) | Cod sursa (job #481830) | Cod sursa (job #1511353) | Cod sursa (job #2370928)
//#include "pch.h"
#include <iostream>
#include <fstream>
#include <queue>
#include <list>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n, m, S;
list<int> G[100005],coada;
int viz[100005], cost[100005];
int main()
{
fin >> n >> m >> S;
int i, j;
while (fin >> i >> j)
G[i].push_front(j);
coada.push_back(S);
while (coada.begin() != coada.end())
{
int nod = *coada.begin();
viz[nod] = 1;
for (auto k : G[nod])
if (!viz[k]) {
coada.push_back(k);
cost[k] = cost[nod] + 1;
}
coada.pop_front();
}
for (int i = 1; i <= n; i++)
if (cost[i] == 0 and i != S)
fout << -1 <<" ";
else
fout << cost[i] <<" ";
}