Pagini recente » Cod sursa (job #1542084) | Cod sursa (job #2720001) | Cod sursa (job #1644093) | Cod sursa (job #2624218) | Cod sursa (job #3203877)
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
const int Vmax = 100001;
vector<int> v[Vmax];
queue<int> Q;
vector<int> dist(Vmax, -1);
int n, m, s;
void bfs(int nod){
Q.push(nod);
while(!Q.empty()){
int primul = Q.front();
Q.pop();
for(int i : v[primul]){
if(dist[i] == -1){
dist[i] = dist[primul] + 1;
Q.push(i);
}
/*else if(dist[primul] + 1 < dist[i]){
dist[i] = dist[primul] + 1;
Q.push(i);
}*/
}
}
}
int main(){
fin>>n>>m>>s;
while(m--){
int x, y;
fin>>x>>y;
v[x].push_back(y);
}
dist[s]=0;
bfs(s);
for(int i=1;i<=n;i++){
fout<<dist[i]<<" ";
}
}