Pagini recente » Cod sursa (job #2329580) | Cod sursa (job #738342) | Cod sursa (job #2973266) | Cod sursa (job #2413349) | Cod sursa (job #3246438)
#include <fstream>
#include <queue>
#include <vector>
#define INF 0x3f3f3f3f
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int main() {
int n, m, s;
fin >> n >> m >> s;
vector<int> G[n + 2];
vector<int> d(n + 2, INF);
for(; m; --m) {
int x, y;
fin >> x >> y;
G[x].push_back(y);
}
queue<int> Q;
Q.push(s);
d[s] = 0;
while(!Q.empty()) {
int nod = Q.front();
Q.pop();
for(int i : G[nod]) {
if(d[i] > d[nod] + 1) {
d[i] = d[nod] + 1;
Q.push(i);
}
}
}
// Cerinta a
for(int i = 1; i <= n; ++i) {
fout << (d[i] == INF ? -1 : d[i]) << " ";
}
fout << "\n";
return 0;
}