Pagini recente » Cod sursa (job #2561333) | Cod sursa (job #1718294) | Cod sursa (job #3178503) | Cod sursa (job #1098166) | Cod sursa (job #2195439)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream cin ("bfs.in");
ofstream cout ("bfs.out");
const int nmax = 100000;
int n, m, S;
int x, y;
vector < vector <int> > g(1 + nmax);
queue <int> q;
int viz[1 + nmax];
bool ok[1 + nmax];
int main() {
cin >> n >> m >> S;
for(int i = 1; i <= m; i++) {
cin >> x >> y;
g[x].push_back(y);
}
q.push(S);
while(!q.empty()) {
int nod = q.front();
q.pop();
for(int i = 0; i < g[nod].size(); i++) {
if(g[nod][i] != S && (viz[g[nod][i]] == 0 || viz[g[nod][i]] > viz[nod] + 1)) {
viz[g[nod][i]] = viz[nod] + 1;
q.push(g[nod][i]);
}
}
}
for(int i = 1; i <= n; i++) {
if(viz[i] || i == S)
cout << viz[i] << " ";
else
cout << "-1 ";
}
return 0;
}