Pagini recente » Cod sursa (job #216915) | Cod sursa (job #1319041) | Cod sursa (job #214231) | Cod sursa (job #2411600) | Cod sursa (job #681095)
Cod sursa(job #681095)
#include<cstdio>
#define NMAX 100000
#define MMAX 2000000
using namespace std;
int n,m,s,V[NMAX],T[2][MMAX],start[NMAX];
void citire()
{
freopen("bfs.in","r",stdin);
int i,x,y;
scanf("%d%d%d", &n,&m,&s);
for(i=1;i<=m;++i)
{
scanf("%d%d",&x,&y);
T[0][i]=y;
T[1][i]=start[x];
start[x]=i;
}
}
void bfs(int s)
{
int ic,sf,man, coada[NMAX];
ic=sf=1;
coada[ic]=s;
//V[s]=k;
while(ic<=sf)
{
man=start[coada[ic]];
while(man)
{
if(V[T[0][man]]==0)
{
sf++;
coada[sf]=T[0][man];
V[T[0][man]]=V[coada[ic]]+1;
}
man=T[1][man];
}
ic++;
}
V[s]=0;
}
void afisare()
{
freopen("bfs.out","w",stdout);
int i;
for(i=1;i<=n;++i)
printf("%d ", !V[i] && i!=s ? -1 : V[i] );
}
int main()
{
citire();
bfs(s);
afisare();
return 0;
}