Pagini recente » Cod sursa (job #562983) | Cod sursa (job #2045820) | Cod sursa (job #2126239) | Cod sursa (job #1167146) | Cod sursa (job #386842)
Cod sursa(job #386842)
#include<fstream>
#define nmax 100001
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n,s;
int coada[nmax],viz[nmax];
struct nod
{int inf;
struct nod *urm;
};
nod *l[nmax];
void citire()
{int i,m,x,y;
fin>>n>>m>>s;
for(i=1;i<=m;i++)
{fin>>x>>y;
nod *nou;
nou=new nod;
nou->inf=y;
nou->urm=l[x];
l[x]=nou;
}
}
void bfs()
{int p,u,aux;
p=u=1;
coada[p]=s;
viz[s]=1;
while(p<=u)
{aux=coada[p];
p++;
for(nod *c=l[aux];c!=NULL;c=c->urm)
if(viz[c->inf]==0)
{u++;
coada[u]=c->inf;
viz[c->inf]=viz[aux]+1;
}
}
for(p=1;p<=n;p++)
if(viz[p]!=0) fout<<viz[p]-1<<' ';
else if(viz[p]==0) fout<<"-1 ";
}
int main()
{citire();
bfs();
fin.close();
fout.close();
return 0;
}