Pagini recente » Cod sursa (job #1407520) | Cod sursa (job #2675467) | Cod sursa (job #324788) | Cod sursa (job #2662230) | Cod sursa (job #681395)
Cod sursa(job #681395)
#include<iostream.h>
#include<fstream.h>
# define maxi 10000
int n,m, a[maxi][maxi],viz[100],x,y;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
void citire()
{
int i,j;
fin>>n>>m>>x;
while(fin>>i>>j)
a[i][j]=1;
for(i=1;i<=n;i++) viz[i]=-1;
}
void bfs(int x)
{
int c[100],k,p,u,i;
p=u=1;
c[u]=x;viz[x]=0;
while(p<=u)
{
k=c[p];
p++;
for(i=1;i<=n;i++)
if(viz[i]==-1&&a[k][i]!=0)
{
viz[i]=viz[k]+1;
u++;
c[u]=i;
}
}
}
/*void scrie(int y)
{
if (y!=-1)
{
scrie(viz[y]);
cout<<y<<' ';
}
}*/
int main()
{
int i;
citire();
bfs(x);
for(i=1;i<=n;i++)
fout<<viz[i]<<' ';
/*cin>>y;
if(viz[y]!=0)
scrie(y);
else
cout<<"nu exista drum de la 1 la"<<y;*/
return 0;
}