Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <cmath>
- #include <algorithm>
- struct Bomb {
- double x = 0;
- double y = 0;
- double r = 0;
- };
- using NumsVec = std::vector<size_t>;
- using BoolVec = std::vector<bool>;
- size_t dfs(size_t v, const std::vector<NumsVec>& g, BoolVec& visited) {
- visited[v] = true;
- size_t visited_cnt = 1;
- for (size_t u : g[v]) {
- if (!visited[u]) {
- visited_cnt += dfs(u, g, visited);
- }
- }
- return visited_cnt;
- }
- int main() {
- size_t n;
- std::cin >> n;
- std::vector<Bomb> bombs(n);
- for (auto& bomb : bombs) {
- std::cin >> bomb.x >> bomb.y >> bomb.r;
- }
- std::vector<NumsVec> g(n);
- for (size_t v = 0; v < n; ++v) {
- for (size_t u = 0; u < n; ++u) {
- if (std::hypot(bombs[v].x - bombs[u].x, bombs[v].y - bombs[u].y) <= bombs[v].r) {
- g[v].push_back(u);
- }
- }
- }
- NumsVec detonated(n);
- for (size_t v = 0; v < n; ++v) {
- BoolVec visited(n, false);
- detonated[v] = dfs(v, g, visited);
- }
- size_t maximum = *std::max_element(detonated.begin(), detonated.end());
- size_t ans_v = 0;
- for (size_t v = 0; v < n; ++v) {
- if (detonated[v] == maximum) {
- ans_v = v;
- }
- }
- std::cout << ans_v + 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement