Pagini recente » Cod sursa (job #2752703) | Cod sursa (job #429132) | Cod sursa (job #2082532) | Cod sursa (job #2577412) | Cod sursa (job #2649859)
#include <fstream>
using namespace std;
ifstream cin ("bfs.in");
ofstream cout ("bfs.out");
int n, m, r, s, d, x, y;
int viz[100005], coada[100005];
struct nod {
int et;
nod* adr;
} *L[100005];
void bfs(int a)
{
coada[1]=a;
s=d=1;
while(s<=d)
{
for(nod* nd=L[coada[s]]; nd !=NULL; nd=nd ->adr)
if(viz[nd->et]==-1)
{
coada[++d]=nd->et;
viz[coada[d]]=viz[coada[s]]+1;
}
s++;
}
}
int main() {
cin>>n>>m>>r;
for (int i = 1; i <= n; ++i)
viz[i] = -1;
viz[r] = 0;
while(cin>>x>>y)
{
nod* p = new nod;
p -> et = y;
p -> adr = L[x];
L[x] = p;
}
bfs(r);
for (int i = 1; i <= n; ++i)
cout << viz[i] << ' ';
return 0;
}