Pagini recente » Cod sursa (job #2516630) | Cod sursa (job #725367) | Cod sursa (job #3286620) | Cod sursa (job #925761) | Cod sursa (job #2451623)
#include <fstream>
#include <vector>
#include <algorithm>
#include <queue>
#pragma gcc optimize("O3")
using namespace std;
ifstream in ("bfs.in");
ofstream out ("bfs.out");
vector <int> v[100001];
vector <int> raspuns (100002);
queue <int> coada;
bool vizitat [1000001];
int n;
void lee (int nod)
{
coada.push(nod);
vizitat[nod]=1;
while (!coada.empty())
{
int alfa=coada.front();
coada.pop();
for (int i=0;i<v[alfa].size();++i)
{
if (!vizitat[v[alfa][i]])
{
coada.push(v[alfa][i]);
vizitat[v[alfa][i]]=1;
raspuns[v[alfa][i]]=raspuns[alfa]+1;
}
}
}
for (int i=1;i<=n;++i)
if (!vizitat[i])
out<<-1<<' ';
else
out<<raspuns[i]<<' ';
}
int main()
{
int m,start;
in>>n>>m>>start;
for (int i=1;i<=m;++i)
{
int a,b;
in>>a>>b;
v[a].push_back(b);
}
lee(start);
return 0;
}