Pagini recente » Cod sursa (job #325902) | Cod sursa (job #1931964) | Cod sursa (job #2136665) | Cod sursa (job #3232633) | Cod sursa (job #2702157)
#include <fstream>
#include <vector>
using namespace std;
int n;
vector<int> a[100001];
int d[100001];
int viz[100001];
void bfs(int x) {
int i, st, dr, Q[100001];
st = dr = 0;
viz[x] = 1;
d[x] = 0;
Q[st] = x;
while (st <= dr) {
x = Q[st++];
for (i = 0; i < a[x].size(); i++)
if (!viz[a[x][i]]) {
viz[a[x][i]] = 1;
d[a[x][i]] = d[x] + 1;
Q[++dr] = a[x][i];
}
}
}
int main() {
int i, m, x, y, S;
ifstream f("bfs.in");
f >> n >> m >> S;
for (i = 1; i <= m; i++) {
f >> x >> y;
a[x].push_back(y);
}
f.close();
for (i = 1; i <= n; i++)
d[i] = -1;
bfs(S);
ofstream g("bfs.out");
for (i = 1; i <= n; i++)
g << d[i] << ' ';
g.close();
return 0;
}