Pagini recente » Cod sursa (job #2895274) | Cod sursa (job #3306547) | Cod sursa (job #1473970) | Cod sursa (job #791846) | Cod sursa (job #1429784)
#include <fstream>
#include <vector>
#define NMax 100010
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
vector<int> G[NMax];
int nodes, edges, initNode, v1, v2, qu[NMax], p, u, d[NMax];
int main()
{
f>>nodes>>edges>>initNode;
for (int i=1; i<=edges; i++) {
f>>v1>>v2;
G[v1].push_back(v2);
}
p=u=1;
qu[p] = initNode;
d[initNode] = 1;
while (p<=u) {
for (vector<int>::iterator it = G[qu[p]].begin(); it != G[qu[p]].end(); it++) {
if (!d[*it]) {
qu[++u] = *it;
d[*it] = d[qu[p]] + 1;
}
}
p++;
}
for (int i=1; i<=nodes; i++) {
if (d[i] == 0)
g << -1 << " ";
else {
g << d[i] - 1 << " ";
}
}
return 0;
}