Pagini recente » Cod sursa (job #2355165) | Cod sursa (job #2565140) | Cod sursa (job #1893412) | Cod sursa (job #367260) | Cod sursa (job #2516512)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream f ("bfs.in");
ofstream g("bfs.out");
const int Max=100005;
vector < int > Muchii[Max];
queue < int > coada;
int noduri,nrMuchii,startNod;
int distNod[Max];
void bfs ()
{
int nod,nnod;
unsigned int i;
while(!coada.empty())
{
nod=coada.front();
coada.pop();
for(i=0;i < Muchii[nod].size();i++)
{
nnod=Muchii[nod][i];
if(distNod[nnod]==-1)
{
coada.push(nnod);
distNod[nnod]=distNod[nod]+1;
}
}
}
}
void Read ()
{
int i;
f>>noduri>>nrMuchii>>startNod;
for(i=1;i<=nrMuchii;i++)
{
int x,y;
f>>x>>y;
Muchii[x].push_back(y);// only goes forth
}
}
void negativeNod()
{
int i;
for(i=1;i<=noduri;i++)
distNod[i]=-1;
coada.push(startNod); // add first pozition
distNod[startNod]=0; // initial distance
}
void out ()
{
int i;
for(i=1;i<=noduri;i++)
g<<distNod[i]<<" ";
g<<'\n';
}
int main()
{
Read();
negativeNod();
bfs();
out();
return 0;
}