Pagini recente » Cod sursa (job #2279202) | Cod sursa (job #851769) | Cod sursa (job #1395003) | Profil yellowGreen | Cod sursa (job #634824)
Cod sursa(job #634824)
#include <stdio.h>
#include <vector>
#define Nmax 100050
using namespace std;
int C[Nmax], D[Nmax], L[Nmax], viz[Nmax], n, m, nod, x, y, i, p, u, v;
vector <int> A[Nmax];
int main() {
FILE *f = fopen("bfs.in", "r");
FILE *g = fopen("bfs.out", "w");
fscanf(f, "%d %d %d", &n, &m, &nod);
for (i = 1; i <= m; i++) {
fscanf(f, "%d %d", &x, &y);
A[x].push_back(y);
}
for(i=1;i<=n;i++)
D[i]=-1;
for (i = 1; i <= n; i++)
L[i] = A[i].size();
C[1] = nod, D[nod] = 0, viz[nod] = 1;
for (p = u = 1; p <= u; p++)
for (i = 0; i < L[C[p]]; i++) {
v = A[C[p]][i];
if (!viz[v]) {
viz[v] = 1;
C[++u] = v, D[v] = D[C[p]] + 1;
}
}
for (i = 1; i <= n; i++){
fprintf(g, "%d ", D[i]);
}
return 0;
}