Pagini recente » Cod sursa (job #563970) | Cod sursa (job #692275) | Cod sursa (job #458617) | Cod sursa (job #1580950) | Cod sursa (job #727535)
Cod sursa(job #727535)
#include<iostream>
#include<stdio.h>
#define maxn 100001
using namespace std;
struct pnod{
int info;
pnod *next;
};
pnod *lv[maxn];
int n, s, x, y, prim=0, ultim=0, varf, c[maxn], dist[maxn];
void adauga(int x, int y)
{pnod *aux=new pnod;
aux->info=y;
aux->next=lv[x-1];
lv[x-1]=aux;
}
void bf(int x)
{for(int i=0; i<n; i++)
dist[i]=-1;
dist[x-1]=0;
c[prim]=x;
for( ; prim<=ultim; prim++)
{varf=c[prim];
for(pnod *aux=lv[varf-1]; aux; aux=aux->next)
if(dist[aux->info-1]==-1)
{c[++ultim]=aux->info;
dist[aux->info-1]=dist[varf-1]+1;
}
}
}
int main()
{freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
cin>>n>>s>>s;
for(; cin>>x>>y; )
adauga(x, y);
bf(s);
for(int i=0; i<n; i++)
cout<<dist[i]<<" ";
fclose(stdin);
fclose(stdout);
return 0;
}