Pagini recente » Cod sursa (job #866858) | Cod sursa (job #1763378) | Cod sursa (job #1291066) | Cod sursa (job #3291195) | Cod sursa (job #2685282)
#include <iostream>
#define Nmax 100005
#include <vector>
#include <queue>
#include <fstream>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n,m,src;
int drumuri[Nmax];
queue<int> coada;
vector<int> a[Nmax];
bool vizited[Nmax];
void bfs(int nod)
{ coada.push(nod);
while(!coada.empty())
{
int nod_current=coada.front();
coada.pop();
for(int i=0;i<a[nod_current].size();++i)
{
int vecin = a[nod_current][i];
if(!vizited[vecin])
{
coada.push(vecin);
drumuri[vecin]=drumuri[nod_current]+1;
vizited[vecin]=1;
}
}
}
}
int main()
{ int x,y;
fin>>n>>m>>src;
for(int i=1;i<=m;++i)
{ fin>>x>>y;
a[x].push_back(y);
}
drumuri[src]=0;
vizited[src]=1;
bfs(src);
for(int i=1;i<=n;++i)
{ if(drumuri[i]==0 && i!=src)drumuri[i]=-1;
fout<<drumuri[i]<<" ";
}
return 0;
}