Pagini recente » Cod sursa (job #509565) | Cod sursa (job #2520196) | Cod sursa (job #1620078) | Cod sursa (job #2646100) | Cod sursa (job #1807455)
#include <vector>
#include <fstream>
using namespace std;
vector<int> L[100005];
int d[100005];
bool viz[100005];
int n;
vector<int> b;
void bf(int x) {
b.push_back(x);
viz[x] = true;
for(int i = 0; i < b.size(); i ++) {
for(int j = 0; j < L[b[i]].size(); j ++) {
if(!viz[ L[b[i]][j] ]) {
d[ L[b[i]][j] ] = d[b[i]] + 1;
b.push_back(L[b[i]][j]);
viz[L[b[i]][j]] = true;
}
}
}
}
int main()
{
ifstream f("bfs.in");
ofstream g("bfs.out");
int m, s, x, y;
f >> n >> m >> s;
for(int i = 1; i <= m; i ++) {
f >> x >> y;
L[x].push_back(y);
}
bf(s);
for(int i = 1; i <= n; i ++)
if(i == s) g << "0 ";
else if(d[i] == 0) g << "-1 ";
else g << d[i] << " ";
g << "\n";
return 0;
}