Pagini recente » Cod sursa (job #2591247) | Cod sursa (job #3277184) | Cod sursa (job #2110446) | Cod sursa (job #43832) | Cod sursa (job #1278763)
#include <iostream>
#include <fstream>
#include <vector>
#include <bitset>
#include <queue>
typedef std::vector<int>::iterator iter;
std::ifstream f("bfs.in");
std::ofstream g("bfs.out");
const int MAXN = 100005;
const int INF = 0x3f3f3f3f;
int n;
std::vector<int> G[MAXN];
int dist[MAXN];
std::bitset<MAXN> viz;
std::queue<int> q;
void bfs(int nod, int *dist)
{
dist[nod] = 1;
viz[nod] = true;
q.push(nod);
while (!q.empty()) {
int nd = q.front();
q.pop();
for (iter it = G[nd].begin(); it != G[nd].end(); it++) {
if (!viz[*it]) {
q.push(*it);
viz[*it] = true;
dist[*it] = dist[nd] + 1;
}
}
}
for (int i = 1; i <= n; i++) {
dist[i] -= 1;
}
}
int main()
{
int m, s;
f >> n >> m >> s;
for (int i = 1, x, y; i <= m; i++) {
f >> x >> y;
G[x].push_back(y);
}
bfs(s, dist);
for (int i = 1; i <= n; i++) {
g << dist[i] << ' ';
}
g << std::endl;
}