Pagini recente » Cod sursa (job #3142936) | Cod sursa (job #2864114) | Cod sursa (job #2230756) | Cod sursa (job #2628478) | Cod sursa (job #398647)
Cod sursa(job #398647)
#include <iostream.h>
#include <fstream.h>
#define DIM 100001
//char a[DIM][DIM];
struct nod{
int inf;
nod *adr;
};
nod *P[DIM], *q;
int c[DIM];
char viz[DIM];
int D[DIM];
int n,m,i,j,p,u,s;
ifstream f("bfs.in");
ofstream g("bfs.out");
void citire(){
int i,j,k;
f>>n>>m>>s;
for (k = 1; k<=m; k++) {
f>>i>>j;
q = new nod;
q->inf = j;
q->adr = P[i];
P[i] = q;
//a[i][j]=1;
}
}
void bf(){
int p,x,u;
p=u=1;
c[p]=s;
viz[s]=1;
while(p<=u){
q = P[c[p]];
while (q!=NULL) {
i = q->inf;
if(!viz[i]){
c[++u]=i;
viz[i]=1;
D[i] = D[c[p]] + 1;
}
q = q->adr;
}
p++;
}
}
int main(){
citire();
bf();
for (i=1;i<=n;i++)
if (viz[i] == 0)
g<<-1<<" ";
else
g<<D[i]<<" ";
g.close();
f.close();
return 0;
}