Pagini recente » Cod sursa (job #1086286) | Cod sursa (job #1357492) | Cod sursa (job #2097812) | Cod sursa (job #1822036) | Cod sursa (job #2195427)
#include <fstream>
using namespace std;
ifstream in ("bfs.in");
ofstream out ("bfs.out");
int coada[100005],start[100005],t[2][1000005],r[100005],n,m,poz;
void citire ()
{
in>>n>>m>>poz;
int i,k=0,a,b;
for(i=1;i<=m;i++)
{
in>>a>>b;
k++;
t[0][k]=b;
t[1][k]=start[a];
start[a]=k;
}
}
void bfs ()
{
int i,st=1,dr=1,x,y;
coada[1]=poz;
r[poz]=0;
while(st<=dr)
{
x=coada[st];
for(i=start[x];i!=0;i=t[1][i])
{
y=t[0][i];
if(r[y]==-1)
{
r[y]=1+r[x];
dr++;
coada[dr]=y;
}
}
st++;
}
}
int main()
{
int i;
citire();
for(i=1;i<=n;i++)
r[i]=-1;
bfs();
for(i=1;i<=n;i++)
out<<r[i]<<' ';
return 0;
}