Pagini recente » Rating Cosmin Dimisca (dcg97) | Cod sursa (job #339008) | Rating Vlad Cristea (VladCristea) | Cod sursa (job #942692) | Cod sursa (job #2224459)
#include <fstream>
#include <vector>
#include <algorithm>
#include <iostream>
#define DIM 100010
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int main() {
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 = 1; i <= m; i++) {
fin >> x >> y;
adjaency[x].push_back(y);
}
for (int i = 1; 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;
int nod, neigh;
while (p <= u) {
nod = current[p];
for (int i = 0; i < adjaency[nod].size(); i++) {
neigh = adjaency[nod][i];
if (visited[neigh] == 0) {
visited[neigh] = 1;
current[++u] = neigh;
distances[neigh] = 1 + distances[nod];
}
}
p ++;
}
for (int i = 1; i <= n; i++) {
if (distances[i] == 0) {
fout << -1 << " ";
continue;
}
fout << -1 + distances[i] << " ";
}
//system("pause");
return 0;
}