Pagini recente » Cod sursa (job #360909) | Cod sursa (job #2923388) | Cod sursa (job #3249790) | Cod sursa (job #560121) | Cod sursa (job #683013)
Cod sursa(job #683013)
#include<cstdio>
using namespace std;
int a[2][1000],n,m,s,st[1000],viz[1000];
void citire()
{
int x,y,i;
freopen("bfs.in","r",stdin);
scanf("%d%d%d", &n,&m,&s);
for(i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
a[0][i]=y;
a[1][i]=st[x];
st[x]=i;
}
}
void bfs(int s)
{
int p,u,c[1000],v,k;
k=1;
p=u=1;
c[p]=s;
viz[s]=k;
while(p<=u)
{
v=st[c[p]];
p++;
while(v)
{
if(viz[a[0][v]]==0)
{
u++;
c[u]=a[0][v];
viz[a[0][v]]=k;
}
v=a[1][v];
}
k++;
}
viz[s]=0;
}
void afisare()
{
int i;
freopen("bfs.out","w",stdout);
for(i=1;i<=n;i++)
{
printf("%d ", !viz[i] && i!=s ? -1 : viz[i] );
}
}
int main()
{
citire();
bfs(s);
afisare();
return 0;
}