Pagini recente » Cod sursa (job #50886) | Cod sursa (job #811935) | Cod sursa (job #2891573) | Cod sursa (job #391765) | Cod sursa (job #626894)
Cod sursa(job #626894)
#include <cstdio>
#define file_in "bfs.in"
#define file_out "bfs.out"
#define nmax 100100
typedef struct nod{
int val;
nod * urm;
} * Qnod;
Qnod G[nmax];
int a,b,N,M,S;
int Cost[nmax];
int viz[nmax];
int i,Q[nmax];
void add(Qnod & p,int x){
Qnod c=new nod;
c->val=x;
c->urm=p;
p=c;
}
void bfs(int nod){
int x;
Qnod c;
int p=1;
int u=1;
Q[p]=nod;
viz[nod]=1;
while(p<=u){
x=Q[p];
for (c=G[x];c!=NULL;c=c->urm)
if (!viz[c->val]){
viz[c->val]=1;
Q[++u]=c->val;
Cost[c->val]=Cost[x]+1;
}
p++;
}
}
int main(){
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%d %d %d", &N, &M, &S);
while(M--){
scanf("%d %d", &a, &b);
add(G[a],b);
}
for (i=1;i<=N;++i)
Cost[i]=-1;
Cost[S]=0;
bfs(S);
for (i=1;i<=N;++i)
printf("%d ", Cost[i]);
return 0;
}