Pagini recente » Cod sursa (job #2145216) | Cod sursa (job #1093908) | Cod sursa (job #1799636) | Istoria paginii runda/warmup/clasament | Cod sursa (job #1568254)
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
int const nmax = 100050;
int n, m, S, cost[nmax];
bool checked[nmax];
vector<int> graf[nmax];
queue<int> coada;
int main()
{
in >> n >> m >> S;
for(int i = 0, x, y; i < m; i++){
in >> x >> y;
graf[x].push_back(y);
}
coada.push(S);
cost[S] = 1;
while(!coada.empty()){
for(int i = 0; i < graf[coada.front()].size(); i++){
if(!cost[graf[coada.front()][i]]){
coada.push(graf[coada.front()][i]);
cost[graf[coada.front()][i]] = cost[coada.front()] + 1;
}
}
coada.pop();
}
for(int i = 1; i <= n; i++)
out << cost[i] - 1 << ' ';
return 0;
}