Pagini recente » Cod sursa (job #1476348) | Cod sursa (job #1409926) | Cod sursa (job #2978494) | Cod sursa (job #1593240) | Cod sursa (job #1110472)
#include<fstream>
using namespace std;
struct nod
{
int v;
nod *urm;
};
nod *LA[100002];
int n,S;
void citire(int &n , nod *LA[] , int &S)
{
fstream fin;
nod *p;
int m,i,vf1,vf2;
fin.open("bfs.in",ios::in);
fin>>n>>m>>S;
for(i=1;i<=m;i++)
{
fin>>vf1>>vf2;
p=new nod;
p->v=vf2;
p->urm=LA[vf1];
LA[vf1]=p;
}
fin.close();
}
void bfs(int S , int n , nod *LA[] )
{
int coada[100002],pr,ul,viz[100002],i;
nod *p;
fstream fout;
for(i=1;i<=n;i++)
{
viz[i]=-1;
}
viz[S]=0;
coada[1]=S;
pr=1;
ul=1;
while(pr<=ul)
{
i=coada[pr];
for(p=LA[i];p!=0;p=p->urm)
{
if(viz[p->v]==-1)
{
ul++;
coada[ul]=p->v;
viz[p->v]=1+viz[i];
}
}
pr++;
}
fout.open("bfs.out",ios::out);
for(i=1;i<=n;i++)
{
fout<<viz[i]<<" ";
}
fout.close();
}
int main ()
{
citire(n,LA,S);
bfs(S,n,LA);
return 0;
}