Pagini recente » Cod sursa (job #2842963) | Cod sursa (job #1702692) | Clasament oji2017sim | Cod sursa (job #1914547) | Cod sursa (job #1548552)
#include <iostream>
#include <queue>
#include <fstream>
#include <vector>
#define nmax 100005
using namespace std;
void get_data (int &n, int &m, int &s, vector <int> v[nmax]){
ifstream fin ("bfs.in");
fin >> n >> m >> s;
int x, y;
for (int i = 1; i <= m; i++){
fin >> x >> y;
v[x].push_back(y);
}
}
void bfs (int s, int n, vector <int> v[], int dist[]){
for (int i = 1; i <= n; i++)
dist[i] = -1;
dist[s] = 0;
queue <int> q;
q.push(s);
while (!q.empty()){
int current = q.front();
q.pop();
for (auto x : v[current])
if (dist[x] == -1){
dist[x] = dist[current] + 1;
q.push (x);
}
}
}
void output_data(int n, int s, vector <int> v[], int dist[]){
bfs (s, n, v, dist);
ofstream fout ("bfs.out");
for (int i = 1; i <= n; i++)
fout << dist[i] << " ";
}
int main(){
int n, m, s;
vector <int> v[nmax];
int dist[nmax];
get_data (n, m, s, v);
output_data (n, s, v, dist);
return 0;
}