Pagini recente » Cod sursa (job #2505464) | Cod sursa (job #2579484) | Cod sursa (job #2797019) | Cod sursa (job #1645847) | Cod sursa (job #2200973)
#include<fstream>
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
struct nod{
int val;
nod *next;
};
int n, st;
long m;
nod *l[100005], *p, *v;
int viz[100005];
void coadainser(int x){
nod *r; r=new nod; r->val=x; r->next=NULL;
if(!p) p=r, v=r;
else{v->next=r; v=r;}
}
int coadaextrag(){
nod *r; r=p;
p=p->next;
int x = r->val;
delete r;
return x;
}
void add(int x, int y){
nod *r; r=new nod; r->val=y; r->next=NULL;
if(!l[x]) l[x]=r;
else{ r->next=l[x]; l[x]=r; }
}
void bfs(){
while(p){
int nd = coadaextrag();
nod *r; r=l[nd];
while(r){
if(!viz[r->val]){ viz[r->val]=viz[nd]+1;
coadainser(r->val);}
r=r->next;
}
}
}
int main(){
cin>>n>>m>>st;
while(m--){
int x, y;
cin>>x>>y;
add(x, y);
}
coadainser(st); viz[st]=1;
bfs();
for(int i=1; i<=n; ++i){
if(viz[i]==0) cout<<-1<<" ";
else cout<<viz[i]-1<<" ";
}
return 0;
}