Pagini recente » Cod sursa (job #1050478) | Cod sursa (job #1008754) | Cod sursa (job #2755490) | Cod sursa (job #2874707) | Cod sursa (job #2373273)
#include <iostream>
#include <vector>
#include <queue>
#include <fstream>
using namespace std;
#define LIMITA 100001
vector <int> Matrice[LIMITA];
int nodStart;
queue <int> Coada;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int Distanta[LIMITA];
void BFS()
{
int Nod, Vecin;
while(!Coada.empty())
{
Nod = Coada.front();
Coada.pop();
for(unsigned int i = 0; i < Matrice[Nod].size(); i++)
{
Vecin = Matrice[Nod][i];
if(Distanta[Vecin] == -1)
{
Distanta[Vecin] = Distanta[Nod] + 1;
Coada.push(Vecin);
}
}
}
}
void citire()
{
int N,M;
fin>>N>>M>>nodStart;
for(int i = 1 ; i <= M ; i++)
{
int x,y;
fin>>x>>y;
Matrice[x].push_back(y);
}
for(int i = 1 ; i <= N; i++)
Distanta[i] = -1;
Distanta[nodStart] = 0;
Coada.push(nodStart);
BFS();
for(int i = 1 ; i <= N ; i++)
fout << Distanta[i] << ' ';
fin.close();
fout.close();
}
int main()
{
citire();
return 0;
}