Pagini recente » Cod sursa (job #2300466) | Cod sursa (job #1174467) | Cod sursa (job #488229) | Cod sursa (job #1187084) | Cod sursa (job #683006)
Cod sursa(job #683006)
#include<cstdio>
int a[2][1000],n,m,s,st[1000],viz[1000];
void citire()
{
int x,y,i;
ifstream fin("bfs.in");
fin>>n>>m>>s;
for(i=1;i<=m;i++)
{
fin>>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;
ofstream fout("bfs.out");
for(i=1;i<=n;i++)
{
if(viz[i]==0 && i!=s)
{
fout<<"-1"<<' ';
}
else
fout<<viz[i]<<' ';
}
}
int main()
{
citire();
bfs(s);
afisare();
return 0;
}