Pagini recente » Cod sursa (job #1718240) | Cod sursa (job #2891015) | Cod sursa (job #1828462) | Cod sursa (job #750096) | Cod sursa (job #2534815)
#include <fstream>
#include <vector>
#include <queue>
std::ifstream f("bfs.in");
std::ofstream g("bfs.out");
const int NMAX = 100'005;
int n,m,nodStart,x,y,d[NMAX];
std::vector<int>L[NMAX];
std::queue<int>Q;
void bfs(){
while(!Q.empty()){
int nod = Q.front();
Q.pop();
for(int vecin : L[nod]){
if(d[vecin] == -1){
Q.push(vecin);
d[vecin] = d[nod] + 1;
}
}
}
}
int main(){
f >> n >> m >> nodStart;
for(int i = 1;i <= m;++i){
f >> x >> y;
L[x].push_back(y);
}
for(int nod = 1;nod <= n;++nod)
d[nod] = -1;
d[nodStart] = 0;
Q.push(nodStart);
bfs();
for(int nod = 1;nod <= n;++nod)
g << d[nod] << ' ';
return 0;
}