Pagini recente » Cod sursa (job #1080422) | Cod sursa (job #2231177) | Cod sursa (job #3266815) | Cod sursa (job #1707750) | Cod sursa (job #2513010)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int n, m, s, c[100001], d[100001],x,y;
struct Nod{ int info;
Nod* leg;
}*L[100001];
void ad(int x, int y)
{
Nod *p=new Nod;
p->info=y;
p->leg=L[x];
L[x]=p;
}
void bfs(int s)
{ for(int i=1;i<=n;i++) d[i]=-1;
c[1]=s;
int st=1,dr=1;
d[s]=0;
while(st<=dr) { int x=c[st++];
Nod *p;
for(p=L[x];p;p=p->leg)
{
int y=p->info;
if(d[y]==-1) {c[++dr]=y;
d[y]=d[x]+1;
}
}
}
}
int main()
{
f>>n>>m>>s;
for(int i=1;i<=m;i++) { f>>x>>y;
ad(x,y);
}
bfs(s);
for(int i=1;i<=n;i++) g<<d[i]<<" ";
return 0;
}