Pagini recente » Rating Ghiujan Costin Daniel (BucsaV) | Cod sursa (job #1381467) | Cod sursa (job #157063) | Cod sursa (job #3189372) | Cod sursa (job #2224456)
#include <fstream>
#include <vector>
#include <algorithm>
#include <iostream>
#define DIM 100010
using namespace std;
int main(){
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n, m, s;
fin >> n >> m >> s;
vector <int> adjaency[DIM];
int visited[DIM], distances[DIM], current[DIM];
int x, y;
for( int i = 0; i < m; i++){
fin >> x >> y;
adjaency[x].push_back(y);
}
for( int i = 0; i < n; i++){
sort(adjaency[i].begin(), adjaency[i].end());
}
current[1] = s;
visited[s] = 1;
distances[s] = 1;
int p = 1;
int u = 1;
while( p <= u ){
int nod = current[p];
for( int i = 0; i < adjaency[nod].size(); i++){
int neigh = adjaency[nod][i];
if( visited[neigh] == 0 ){
visited[neigh] = 1;
current[++u] = neigh;
distances[neigh] = 1 + distances[nod];
}
p++;
}
}
for( int i = 0; i < n; i++ ){
fout << -1 + distances[i] << " ";
}
return 0;
}