Pagini recente » Cod sursa (job #1950730) | Cod sursa (job #3160984) | Cod sursa (job #2271466) | Cod sursa (job #2042267) | Cod sursa (job #638779)
Cod sursa(job #638779)
#include <stdio.h>
#include <list>
#define DIM 100002
using namespace std;
struct nod {
int v;
nod* adr;
};
nod *L[DIM], *q;
int C[DIM];
int X[DIM];
char V[DIM];
int D[DIM];
int p, u, i, N, M, S, x, y;
int main() {
FILE *f = fopen("bfs.in","r");
FILE *g = fopen("bfs.out","w");
fscanf(f,"%d %d %d",&N, &M, &S);
for (i=1;i<=M;i++) {
fscanf(f,"%d %d",&x, &y);
q = new nod;
q->v = y;
q->adr = L[x];
L[x] = q;
}
fclose(f);
C[1] = S;
p = u = 1;
V[S] = 1;
while (p<=u) {
// for (i=0;i<D[C[p]];i++) {
list<int>::iterator it;
for (q = L[C[p]]; q!=NULL; q = q->adr) {
if (!V[q->v]) {
C[++u] = q->v;
V[q->v] = 1;
X[q->v] = X[C[p]] + 1;
}
}
p++;
}
for (i=1;i<=N;i++) {
if (!V[i]) {
fprintf(g,"%d ",-1);
} else {
fprintf(g,"%d ",X[i]);
}
}
fclose(g);
return 0;
}