Pagini recente » Cod sursa (job #1327688) | Cod sursa (job #1913239) | Cod sursa (job #2943613) | Cod sursa (job #3163959) | Cod sursa (job #1847915)
#include<fstream>
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
int n, m, st, c[40000], prim, ultim, drum[40000], k=0, init;
bool viz[40000];
struct nod{
int val;
nod *next;
};
nod *L[100005], *p;
void bfs(){
while(prim<=ultim){
p=L[c[prim]];
while(p){
if(viz[p->val]==0){
++ultim; drum[p->val]=drum[c[prim]]+1;
c[ultim]=p->val;
}
p=p->next;
}
++prim;
}
}
int main(){
cin>>n>>m>>st;
while(m--){
int x, y;
cin>>x>>y;
p=new nod;
p->val=y;
p->next=L[x];
L[x]=p;
}
prim=ultim=1; viz[st]=1;
c[prim]=st; drum[st]=0;
bfs(); init=st;
/* for(int i=1; i<=n; ++i){
cout<<c[i]<<" ";
}
*/
for(int i=1; i<=n; ++i){
if(drum[i]==0 && i!= init) drum[i]=-1;
cout<<drum[i]<<" ";
}
return 0;
}