Pagini recente » Cod sursa (job #215470) | Cod sursa (job #2694433) | Cod sursa (job #2425405) | Cod sursa (job #3204469) | Cod sursa (job #2831040)
#include <fstream>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int T[2][2000005],n,m,st,Start[100005],k,viz[100005],c[100005];
int d[100005],prim,ultim;
void Citire()
{
int i,j,k=0;
f>>n>>m>>st;
while (f>>i>>j)
{
k++;
T[0][k]=j;
T[1][k]=Start[i];
Start[i]=k;
}
d[st]=0;
}
void bfs(int start)
{
int p,contor=0;
c[prim]=start;
viz[start]=1;
d[start]=0;
while(prim<=ultim)
{
contor=d[c[prim]];
p=Start[c[prim]];
while(p)
{
if(viz[T[0][p]]==0)
{
d[T[0][p]]=contor+1;
ultim++;
c[ultim]=T[0][p];
viz[T[0][p]]=1;
}
p=T[1][p];
}
prim++;
}
}
int main()
{
Citire();
bfs(st);
for(int i=1;i<=n;i++)
{
if(d[i]==0 && i!=st) g<<"-1"<<" ";
else g<<d[i]<<" ";
}
return 0;
}