Pagini recente » Cod sursa (job #788407) | Sandbox (cutiuţa cu năsip) | Cod sursa (job #1110496)
#include<fstream>
using namespace std;
struct nod
{
int v;
nod*urm;
};
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();
}
nod*LA[10002];
int n,S;
int main()
{
citire(n,LA,S);
bfs(S,n,LA);
return 0;
}