Pagini recente » Cod sursa (job #1371667) | Cod sursa (job #1844578) | Cod sursa (job #2952108) | Cod sursa (job #1126635) | Cod sursa (job #2041942)
#include <vector>
#include <fstream>
#include <queue>
using namespace std ;
int main(int argc, char const *argv[])
{
ifstream cin ("bfs.in") ;
ofstream cout ("bfs.out") ;
int n, m, source ;
cin >> n >> m >> source ;
vector < vector<int> > gr (n + 1) ;
while (m --) {
int x, y ;
cin >> x >> y ;
gr [x].push_back (y) ;
}
vector <int> dist (n + 1, 1 << 29) ;
queue <int> Q ;
Q.push (source) ;
dist [source] = 0 ;
while (!Q.empty()) {
auto nod = Q.front () ;
Q.pop () ;
for (auto &x : gr [nod]) {
if (dist [x] > dist [nod] + 1) {
dist [x] = dist [nod] + 1 ;
Q.push (x) ;
}
}
}
for (int i = 1 ; i <= n ; ++ i) {
if (dist [i] >= (1 << 29)) {
cout << -1 << ' ' ;
}
else {
cout << dist [i] << ' ' ;
}
}
cout << '\n' ;
return 0;
}