Pagini recente » Cod sursa (job #2514012) | Cod sursa (job #511014) | Borderou de evaluare (job #2028503) | Cod sursa (job #2655023) | Cod sursa (job #1163416)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
const int MAX = 100050;
int N, M, S;
int D[MAX];
vector<int> G[MAX];
queue<int> Q;
void citire() {
ifstream in("bfs.in");
in >> N >> M >> S;
for(int i = 1, A, B; i <= M; i++) {
in >> A >> B;
G[A].push_back(B);
} in.close();
}
void solve(int start) {
for(int i = 1; i <= N; i++)
D[i] = -1;
D[start] = 0;
Q.push(start);
while(!Q.empty()) {
int nod = Q.front(); Q.pop();
for(size_t i = 0; i < G[nod].size(); i++) {
int dest = G[nod][i];
if(D[dest] == -1) {
D[dest] = D[nod] + 1;
Q.push(dest);
}
}
}
}
void afisare() {
ofstream out("bfs.out");
for(int i = 1; i <= N; i++)
out << D[i] << " ";
}
int main() {
citire();
solve(S);
afisare();
}