Pagini recente » Cod sursa (job #1807810) | Cod sursa (job #2897739) | Cod sursa (job #99239) | Cod sursa (job #1391858) | Cod sursa (job #1732181)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
vector<int> listaAdiacenta[100005];
int distanta[100005];
void AfisareDistanta(int numarNoduri)
{
ofstream out("bfs.out");
for( int i = 1; i<=numarNoduri; ++i )
{
out<<distanta[i]<<" ";
}
out.close();
}
void BFS(int nodSursa, int numarNoduri)
{
int nod;
queue<int> coada;
coada.push(nodSursa);
fill(distanta, distanta + numarNoduri + 1, -1);
distanta[nodSursa] = 0;
while( !coada.empty() )
{
nod = coada.front();
coada.pop();
for( unsigned int i = 0; i < listaAdiacenta[nod].size(); ++i )
{
if( distanta[listaAdiacenta[nod][i]] == -1 )
{
distanta[listaAdiacenta[nod][i]] = distanta[nod] + 1;
coada.push(listaAdiacenta[nod][i]);
}
}
}
}
int main()
{
int nodSursa;
int numarNoduri;
int numarMuchii;
ifstream in("bfs.in");
in>> numarNoduri>> numarMuchii>> nodSursa;
for( int i = 0, nod1, nod2; i<numarMuchii; ++i )
{
in>> nod1>> nod2;
listaAdiacenta[nod1].push_back(nod2);
}
BFS(nodSursa, numarNoduri);
AfisareDistanta(numarNoduri);
in.close();
return 0;
}