Pagini recente » Cod sursa (job #2062204) | Cod sursa (job #270638) | Cod sursa (job #2853263) | Cod sursa (job #2555429) | Cod sursa (job #638777)
Cod sursa(job #638777)
#include <stdio.h>
#include <list>
#define DIM 100002
using namespace std;
list<int> L[DIM];
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);
L[x].push_back(y);
}
fclose(f);
for (i=1;i<=N;i++) {
D[i] = L[i].size();
}
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 (it = L[C[p]].begin(); it != L[C[p]].end(); it++) {
if (!V[*it]) {
C[++u] = *it;
V[*it] = 1;
X[*it] = 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;
}