Pagini recente » Cod sursa (job #884971) | Cod sursa (job #1654992) | Cod sursa (job #360562) | Cod sursa (job #769303) | Cod sursa (job #317341)
Cod sursa(job #317341)
#include <cstdio>
#include <vector>
#define MaxN 100002
using namespace std;
vector <int> G[MaxN];
int coada[MaxN];
int prim,i,x,S,N,M,y,ultim,Suma[MaxN],viz[MaxN];
int BFS()
{ viz[S]=1;
Suma[S]=0;
coada[0]=S;//initializez coada cu varful de start
while(prim <= ultim)
{
x=coada[ prim++ ];//extrag un element din coada
for(i=0; i<G[x].size(); ++i)
if( !viz[ G[x][i] ] )
{ viz[ G[x][i] ]=1;
Suma[ G[x][i] ]=Suma[x]+1;
coada[ ++ultim ]=G[x][i];//il plasez in coada
}
}
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d %d %d",&N,&M,&S);
for(i=1;i<=M;i++)
{
scanf("%d %d",&x,&y);
G[x].push_back(y);
}
for(i=1; i<=N; ++i) Suma[i]=-1;
BFS();
for(i=1; i<=N; ++i)
printf("%d ",Suma[i]);
return 0;
}