Pagini recente » Cod sursa (job #2990100) | Cod sursa (job #1167901) | Cod sursa (job #2535245) | Cod sursa (job #1988036) | Cod sursa (job #2793755)
#include <fstream>
#include <queue>
#include <vector>
#define NMAX 100000
using namespace std;
ifstream cin ("bfs.in");
ofstream cout ("bfs.out");
int vdist[NMAX + 1];
vector <int> vnext[NMAX + 1];
queue <int> vbfs;
void bfs(int nodeinit) {
int i, n, node, dist, nodenext;
vbfs.push(nodeinit);
vdist[nodeinit] = 1;
while (!vbfs.empty()) {
node = vbfs.front();
dist = vdist[node];
vbfs.pop();
n = vnext[node].size();
for (i = 0; i < n; i++) {
nodenext = vnext[node][i];
if (vdist[nodenext] == 0) {
vdist[nodenext] = dist + 1;
vbfs.push(nodenext);
}
}
}
}
int main() {
int n, m, node, i, a, b;
cin >> n >> m >> node;
for (i = 0; i < m; i++) {
cin >> a >> b;
vnext[a].push_back(b);
}
bfs(node);
for (i = 1; i <= n; i++)
cout << vdist[i] - 1 << " ";
return 0;
}