Pagini recente » Cod sursa (job #2828736) | Cod sursa (job #1160872) | Cod sursa (job #884350) | Cod sursa (job #1848356) | Cod sursa (job #634812)
Cod sursa(job #634812)
#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);
A[y].push_back(x);
}
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++){
if(D[i]==0 && i!=nod)
fprintf(g, "-1 ");
if( i==nod )
fprintf(g, "0 ");
if(D[i]>0)
fprintf(g, "%d ", D[i]);
}
return 0;
}