olexander_dan

Untitled

Aug 2nd, 2019
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.69 KB | None | 0 0
  1. size_t* maxDist(bool** m, const size_t& size) {
  2.     size_t* resDist = new size_t[size];
  3.     for (size_t i = 0; i < size; ++i) {
  4.         resDist[i] = maxDistUtil(m, i, size);
  5.     }
  6.     return resDist;
  7. }
  8.  
  9. size_t maxDistUtil(bool** m, const size_t& v, const size_t& size) {
  10.     bool* visited = new bool[size] {};
  11.     visited[v] = true;
  12.  
  13.     size_t dist = 0;
  14.     std::queue<size_t> stack;
  15.     for (auto&& i : adjVertices(m, v, size))
  16.         stack.push(i);
  17.  
  18.     while (!stack.empty()) {
  19.         size_t& p = stack.front();
  20.         stack.pop();
  21.        
  22.  
  23.         for (auto&& i : adjVertices(m, p, size)) {
  24.             if (!visited[i]) {
  25.                 visited[i] = true;
  26.                 stack.push(i);
  27.                 ++dist;
  28.             }
  29.         }
  30.         visited[p] = true;
  31.     }
  32.     delete[]visited;
  33.     return dist;
  34. }
Advertisement
Add Comment
Please, Sign In to add comment