Pagini recente » Cod sursa (job #219810) | Monitorul de evaluare | Cod sursa (job #742265) | Cod sursa (job #1391400) | Cod sursa (job #2460453)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
vector <int> L[100001];
queue <int> c;
int n,m,Viz[100001],Niv[100001],S;
void Citire()
{int i,x,y;
f>>n>>m>>S;
for(i=1;i<=m;i++)
{f>>x>>y;
L[x].push_back(y);
}
}
void BFS()
{ int nod,vf=S,j;
c.push(vf);
Viz[vf]=1;
while(!(c.empty()))
{nod=c.front();
for(j=0;j<L[nod].size();j++)
if(Viz[L[nod][j]]==0)
{int vec=L[nod][j];
c.push(vec);
Viz[L[nod][j]]=1;
Niv[L[nod][j]]=Niv[nod]+1;
}
c.pop();
}
}
void Afisare()
{ int i;
for(i=1;i<=n;i++)
if(Niv[i]==0&&i!=S)
g<<-1<<" ";
else
g<<Niv[i]<<" ";
}
int main()
{
Citire();
BFS();
Afisare();
f.close();
g.close();
return 0;
}