Pagini recente » Cod sursa (job #1055085) | Cod sursa (job #67551) | Cod sursa (job #34502) | Cod sursa (job #2924424) | Cod sursa (job #829850)
Cod sursa(job #829850)
#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;
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;
lg[y]=lg[x]+1;
}
}
inc++;
}
lg[x0]=0;
for(i=1;i<=n;i++)
if(viz[i]==0) fout<<-1<<' ';
else
fout<<lg[i]<<' ';
}