Pagini recente » Cod sursa (job #592305) | Cod sursa (job #2902739) | Cod sursa (job #1600069) | Cod sursa (job #2922327) | Cod sursa (job #3344434)
#include <iostream>
#include <fstream>
#include <vector>
#include<queue>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int N,M;
const int lim=100001;
vector <int> muchii[lim];
int d[lim];
queue <int> coada;
void bfs ()
{
int nod, vecin;
while (!coada.empty())
{
nod=coada.front();
coada.pop();
for (unsigned int i=0; i<muchii[nod].size(); i++)
{
vecin=muchii[nod][i];
if(d[vecin]==-1)
{
coada.push(vecin);
d[vecin]=d[nod]+1;
}
}
}
}
void citire()
{
int X,Y,S;
fin>>N>>M>>S ;
for (int i=1; i<=M; i++)
{
fin>>X>>Y;
muchii[X].push_back(Y);
}
for (int i=1; i<=N; i++)
{
d[i]=-1;
}
d[S]=0;
coada.push(S);
bfs();
for (int i=1; i<=N; i++)
{
fout<<d[i]<<" ";
}
}
int main()
{
citire();
return 0;
}