Pagini recente » Cod sursa (job #463971) | Cod sursa (job #1142996) | Cod sursa (job #1080945) | Cod sursa (job #1749384) | Cod sursa (job #2009277)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#define NMAX 100005
using namespace std;
ifstream f ("bfs.in");
ofstream g ("bfs.out");
vector <int> v[NMAX];
vector <unsigned> cost (NMAX, 1 << 31);
bool viz[NMAX];
int n;
void BFS (int x) {
cost[x] = 0;
viz[x] = 1;
queue <int> q;
q.push(x);
while (!q.empty()) {
int vf = q.front();
vector <int> :: iterator it;
for (it = v[vf].begin(); it != v[vf].end(); ++it) {
if (!viz[*it])
cost[*it] = cost[vf] + 1, viz[*it] = 1, q.push(*it);
}
q.pop();
}
}
int main()
{
int m, x, a, b;
f >> n >> m >> x;
for (;m ; --m) {
f >> a >> b;
v[a].push_back(b);
}
BFS(x);
for (int i = 1; i <= n; ++i)
if (cost[i] == 1 << 31) g << -1 << " ";
else
g << cost[i] << " ";
return 0;
}