Pagini recente » Istoria paginii runda/test1234 | Istoria paginii runda/steleinf2010seniori/clasament | Istoria paginii preoni-2008/runda-3/solutii | Istoria paginii runda/leulloe/clasament | Cod sursa (job #918076)
Cod sursa(job #918076)
#include<fstream>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
#define N 100001
struct nod
{
int info;
nod *urm;
};
nod *lista[N],*p;
int sol[N],coada[N],vf;
int n,m,x,y;
void bfs(int vf)
{
int prim,ultim,nc;
for(int i=1;i<=N;i++)
sol[i]=-1,coada[i]=0;
prim=ultim=1;
coada[prim]=vf;
sol[vf]=0;
while(prim<=ultim)
{
nc=coada[prim];
for(p=lista[nc];p;p=p->urm)
if(sol[p->info]==-1)
{
coada[++ultim]=p->info;
sol[p->info]=sol[nc]+1;
}
prim++;
}
}
int main()
{
int i;
f>>n>>m>>vf;
for(i=1;i<=m;i++)
{
f>>x>>y;
p=new nod;
p->info=y;
p->urm=lista[x];
lista[x]=p;
}
bfs(vf);
for(i=1;i<=n;i++)
g<<sol[i]<<" ";
return 0;
}