Pagini recente » Cod sursa (job #2867003) | Cod sursa (job #3294834) | Cod sursa (job #2293266)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
#define NMax 100010
#define MMax 1000010
int n, m, s;
vector<int> a[NMax];
vector<bool> viz(NMax, false);
int d[NMax];
void citire();
void bfs();
void afisare();
int main(){
citire();
bfs();
afisare();
}
void citire(){
int i, x, y;
fin >> n >> m >> s;
for(i = 0; i < m; i++){
fin >> x >> y;
a[x].push_back(y);
}
fill(d, d + n + 1, -1);
}
void bfs(){
int i, x = s;
queue<int> c;
c.push(x);
d[x] = 0; viz[x] = true;
while(!c.empty()){
x = c.front(); c.pop();
for(i = 0; i < a[x].size(); i++)
if(!viz[a[x][i]]){
d[a[x][i]] = d[x] + 1;
viz[a[x][i]] = true;
c.push(a[x][i]);
}
}
}
void afisare(){
int i;
for(i = 1; i <= n; i++) fout << d[i] << ' ';
}