Pagini recente » Cod sursa (job #587278) | Cod sursa (job #1531115) | Cod sursa (job #2696039) | Cod sursa (job #1432647) | Cod sursa (job #829828)
Cod sursa(job #829828)
#include <fstream>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int m, n, x, y;
int a[100][100], lg[100];
void citire();
void bfs();
int viz[100];//viz[i]=1 daca vf i a fost vizitat
int x0;
int c[100];
int main()
{
citire();
bfs();
return 0;
}
void citire()
{
int i;
fin>>n>>m>>x0;
for(i=1;i<=m;i++)
{
fin>>x>>y;
a[x][y]=1;
}
}
void bfs()
{
int y, i, inc, sf, x;
inc=0; sf=-1;
c[++sf]=x0; viz[x0]=1; //fout<<x<<' ';
while(inc<=sf)
{
x=c[inc];
for(y=1;y<=n;y++)
{
if(viz[y]==0&&a[x][y]==1)
{
c[++sf]=y; viz[y]=1; //fout<<y<<' ';
lg[x]=lg[c[inc]]+1;
//lg[x]++;
}
}
inc++;
}
lg[x0]=0;
for(i=1;i<=n;i++)
if(viz[i]==0) fout<<-1<<' ';
else
fout<<lg[i]<<' ';
}