Advertisement
dan_sml

Sem_1_Task_6

Apr 22nd, 2022
1,048
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.33 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <cmath>
  4. #include <algorithm>
  5.  
  6. struct Bomb {
  7.     double x = 0;
  8.     double y = 0;
  9.     double r = 0;
  10. };
  11.  
  12. using NumsVec = std::vector<size_t>;
  13. using BoolVec = std::vector<bool>;
  14.  
  15. size_t dfs(size_t v, const std::vector<NumsVec>& g, BoolVec& visited) {
  16.     visited[v] = true;
  17.     size_t visited_cnt = 1;
  18.     for (size_t u : g[v]) {
  19.         if (!visited[u]) {
  20.             visited_cnt += dfs(u, g, visited);
  21.         }
  22.     }
  23.     return visited_cnt;
  24. }
  25.  
  26. int main() {
  27.     size_t n;
  28.     std::cin >> n;
  29.     std::vector<Bomb> bombs(n);
  30.     for (auto& bomb : bombs) {
  31.         std::cin >> bomb.x >> bomb.y >> bomb.r;
  32.     }
  33.     std::vector<NumsVec> g(n);
  34.     for (size_t v = 0; v < n; ++v) {
  35.         for (size_t u = 0; u < n; ++u) {
  36.             if (std::hypot(bombs[v].x - bombs[u].x, bombs[v].y - bombs[u].y) <= bombs[v].r) {
  37.                 g[v].push_back(u);
  38.             }
  39.         }
  40.     }
  41.     NumsVec detonated(n);
  42.     for (size_t v = 0; v < n; ++v) {
  43.         BoolVec visited(n, false);
  44.         detonated[v] = dfs(v, g, visited);
  45.     }
  46.     size_t maximum = *std::max_element(detonated.begin(), detonated.end());
  47.     size_t ans_v = 0;
  48.     for (size_t v = 0; v < n; ++v) {
  49.         if (detonated[v] == maximum) {
  50.             ans_v = v;
  51.         }
  52.     }
  53.     std::cout << ans_v + 1;
  54. }
  55.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement