Pagini recente » Cod sursa (job #691151) | Cod sursa (job #2730139) | Cod sursa (job #2122924) | Cod sursa (job #2726454) | Cod sursa (job #1416258)
#include <stdio.h>
#include <vector>
#define NMax 100001
using namespace std;
int n, m, s;
vector<int> v[NMax];
int dist[NMax];
FILE *fin = fopen("bfs.in", "rt");
FILE *fout = fopen("bfs.out", "wt");
int c[NMax], in, sf;
int main() {
fscanf(fin, "%d %d %d", &n, &m, &s);
int x, y;
for (int i = 0; i < m; i++) {
fscanf(fin, "%d %d", &x, &y);
v[x].push_back(y);
}
for (int i = 1; i <= n; i++) {
dist[i] = -1;
}
in = sf = 0;
c[0] = s;
dist[s] = 0;
while (in <= sf) {
// procesez nodul c[in]
int nod = c[in];
for (int i = 0; i < v[nod].size(); i++) if (dist[v[nod][i]] == -1) {
sf++;
c[sf] = v[nod][i];
dist[v[nod][i]] = dist[nod] + 1;
}
in++;
}
for (int i = 1; i <= n; i++) {
fprintf(fout, "%d ", dist[i]);
}
return 0;
}