Pagini recente » Cod sursa (job #486021) | Cod sursa (job #1773354) | Cod sursa (job #288565) | Cod sursa (job #759948) | Cod sursa (job #384913)
Cod sursa(job #384913)
#include<fstream>
#define nmax 100001
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n,m,v;
int coada[nmax],viz[nmax];
struct nod
{int inf;
struct nod *urm;
};
nod *l[nmax];
void citire()
{int i,x,y;
nod *nou;
fin>>n>>m>>v;
for(i=1;i<=m;i++)
{fin>>x>>y;
nou=new nod;
nou->inf=y;
nou->urm=l[x];
l[x]=nou;
}
}
void bfs(int v) //v este varful de start
{int p,u,aux;
viz[v]=0;
p=u=1;
coada[p]=v;
while(p<=u)
{aux=coada[p];
p++;
for(nod *c=l[aux];c!=NULL;c=c->urm)
if(viz[c->inf]==0 && c->inf!=v)
{u++;
coada[u]=c->inf;
viz[c->inf]=viz[aux]+1;
}
}
for(p=1;p<=n;p++)
if(viz[p]) fout<<viz[p]<<" ";
else if(p!=v) fout<<"-1 ";
else fout<<viz[p]<<" ";
}
int main()
{citire();
bfs(v);
fin.close();
fout.close();
return 0;
}