Pagini recente » Cod sursa (job #760089) | Cod sursa (job #1123271) | Cod sursa (job #1457940) | Cod sursa (job #2454782) | Cod sursa (job #1293796)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
int n, m , s ,nr , lst[100001],vf[1000001],urm[1000001] , INF = -1 ,q[1000001] , d[1000001] ;
void adauga(int x , int y)
{
vf[++nr]=y;
urm[nr]=lst[x];
lst[x]=nr;
}
void bfs( int x)
{
int p=1,u=0,poz,y;
q[++u]=x;
d[x]=0;
while(p<=u)
{
x=q[p++];
poz=lst[x];
while(poz!=0)
{
y=vf[poz];
if(d[y]==INF)
{
d[y]=1+d[x];
q[++u]=y;
}
poz=urm[poz];
}
}
}
int main()
{
int i , x , y;
in>>n>>m>>s;
for(i=1; i<=m; i++)
{
in>>x>>y;
adauga(x,y);
}
for(i=1; i<=n; i++)
d[i]=-1;
bfs(s);
for(i=1; i<=n; i++)
{
out<<d[i]<<" ";
}
return 0;
}