Pagini recente » Cod sursa (job #811895) | Cod sursa (job #636101) | Cod sursa (job #667341) | Cod sursa (job #755774) | Cod sursa (job #829854)
Cod sursa(job #829854)
#include <fstream>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int m, n, x, y;
int a[10000][10000], lg[10000];
void citire();
void bfs();
int viz[10000];//viz[i]=1 daca vf i a fost vizitat
int x0;
int c[10000];
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;
}
}
}
lg[x0]=0;
for(i=1;i<=n;i++)
if(viz[i]==0) fout<<-1<<' ';
else
fout<<lg[i]<<' ';
}