Pagini recente » Cod sursa (job #464114) | Cod sursa (job #774290) | Cod sursa (job #1541553) | Cod sursa (job #495216) | Cod sursa (job #396728)
Cod sursa(job #396728)
#include <iostream>
using namespace std;
int a[1001][1001],n,s,m,c[1001],li,ls,viz[1001];
void citire()
{
freopen("bfs.in","r",stdin);
scanf("%d %d %d",&n,&m,&s);
for(int i=1;i<=m;i++)
{
int x,y;
scanf("%d %d",&x,&y);
a[x][y]=1;
}
}
void bfs(int s)
{
for(int i=1;i<=n;i++)
viz[i]=-1;
ls=1,li=1;
c[li]=s;
viz[s]=0;
while(li<=ls)
{
for(int i=1;i<=n;i++)
if((a[c[li]][i]==1)&&(viz[i]==-1))
{
ls++;
c[ls]=i;
viz[i]=viz[c[li]]+1;
}
li++;
}
}
int main()
{
citire();
bfs(s);
freopen("bfs.out","w",stdout);
for(int i=1;i<=n;i++)
printf("%d ",viz[i]);
return 0;
}