Pagini recente » Cod sursa (job #1573167) | Cod sursa (job #2617273) | Cod sursa (job #2824709) | Cod sursa (job #2575252) | Cod sursa (job #1801499)
#include <stdio.h>
#include <vector>
#include <queue>
using namespace std;
FILE *in, *out;
vector <int> g[100005];
int d[100005];
queue <int> cbf;
int sta;
int main ()
{
int n, m;
in = fopen("bfs.in", "r");
out = fopen("bfs.out", "w");
fscanf(in, "%d%d%d", &n, &m, &sta);
for(int i = 1; i <= m; i++) {
int x, y;
fscanf(in, "%d%d", &x, &y);
g[x].push_back(y);
}
cbf.push(sta);
d[sta] = 1;
while(!cbf.empty()) {
int x = cbf.front();
cbf.pop();
for(int i = 0; i < g[x].size(); i++) {
if(d[g[x][i]] == 0) {
d[g[x][i]] = d[x] + 1;
cbf.push(g[x][i]);
}
}
}
for(int i = 1; i <= n; i++) {
fprintf(out, "%d ", d[i] - 1);
}
fclose(in);
fclose(out);
return 0;
}