Pagini recente » Amici | Monitorul de evaluare | Autentificare | Cod sursa (job #3361556) | Cod sursa (job #3361557)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
struct point {
vector <int> V;
};
point X[100005];
int R[100005];
void lee(int poz, int val) {
R[poz]=val;
for (int j=0; j<X[poz].V.size(); j++) {
if (R[X[poz].V[j]]>val+1) lee(X[poz].V[j], val+1);
}
}
int main() {
int n, m, x;
cin>>n>>m>>x;
for (int i=1; i<=m; i++) {
int a, b;
cin>>a>>b;
X[a].V.push_back(b);
}
for (int i=1; i<=n; i++) R[i]=2000000000;
lee(x, 1);
for (int i=1; i<=n; i++) {
if (R[i]!=2000000000) cout<<R[i]-1<<" ";
else cout<<"-1 ";
}
}