Pagini recente » Monitorul de evaluare | Cod sursa (job #3308859) | Cod sursa (job #3343736) | Cod sursa (job #1969436) | Cod sursa (job #3326816)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
#define NMAX 100002
vector<int> graf[NMAX];
queue<int> q;
int dist[NMAX];
void bfs(int nod) {
int now, i, vecin;
q.push(nod);
dist[nod] = 1;
while (!q.empty()) {
now = q.front();
for (i=0; i<graf[now].size(); i++) {
vecin = graf[now][i];
if (dist[vecin]==0) {
q.push(vecin);
dist[vecin] = dist[now]+1;
}
}
q.pop();
}
}
int main() {
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n, m, a, b, k, i;
fin >> n >> m >> k;
for (i=0; i<m; i++) {
fin >> a >> b;
graf[a].push_back(b);
}
bfs(k);
for (i=1; i<=n; i++) {
fout << dist[i]-1 << ' ';
}
fin.close();
fout.close();
return 0;
}