Pagini recente » Cod sursa (job #1720251) | Cod sursa (job #1030187) | Cod sursa (job #1455060) | Cod sursa (job #1337346) | Cod sursa (job #1627612)
#include <fstream>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
const int Nmax=100005;
const int Mmax=400005;
int n,m,a,b,c,nr,vf[Mmax],lst[Nmax],urm[Mmax],q[Nmax],d[Nmax];
void adauga ( int x , int y ){
nr++;
vf[nr]=y;
urm[nr]=lst[x];
lst[x]=nr;
}
void bfs ( int x ){
int p,u,poz,y;
for ( int i=1 ; i<=n ; i++ )
d[i]=-1;
p=u=0;
q[u++]=x;
d[x]=0;
while ( p < u ){
x=q[p++];
poz=lst[x];
while ( poz != 0 ){
y=vf[poz];
poz=urm[poz];
if ( d[y] == -1 ) {
d[y]=1+d[x];
q[u++]=y;
}
}
}
}
int main()
{
fin>>n>>m>>c;
for ( int i=1 ; i<=m ; i++ ){
fin>>a>>b;
adauga(a,b);
}
bfs(c);
for ( int i=1 ; i<=n ; i++ )
fout<<d[i]<<' ';
}