Pagini recente » Cod sursa (job #3206148) | Cod sursa (job #1201701) | Cod sursa (job #2813542) | Cod sursa (job #3291236) | Cod sursa (job #1690241)
#include<fstream>
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
typedef struct nod{
int data;
nod* next;
}* graf;
int n,m,s,x,y;
graf a[100010];
int bf[100010],cost[100010];
bool viz[100010];
void add1(graf &p,int x){
graf z=new nod;
z->data=x;
z->next=p;
p=z;
}
void bfs(){
int in=1,sf=1;
bf[1]=s;
viz[s]=1;
while(in<=sf){
for(graf z=a[bf[in]];z!=NULL;z=z->next){
if(!viz[z->data]){
bf[++sf]=z->data;
cost[z->data]=cost[bf[in]]+1;
viz[z->data]=1;
}
}
in++;
}
}
int main(){
cin>>n>>m>>s;
for(int i=0;i<m;i++){
cin>>x>>y;
add1(a[x],y);
}
bfs();
for(int i=1;i<=n;i++){
if(i==s)cout<<"0 ";
else if(cost[i]==0)cout<<"-1 ";
else cout<<cost[i]<<" ";
}
}