Cerința
Se consideră un poligon militar, pe care este stabilit un sistem de axe de coordonate xOy. Se dau n bombe, numerotate de la 1 la n, pentru fiecare cunoscându-se coordonatele x y și puterea de distrugere p. La explozia unei bombe de putere p se va distruge totul în interiorul și pe cercul de centru x y și rază p, iar dacă există alte bombe în această zonă, vor exploda la rândul lor.
Dându-se numărul de ordine I al unei bombe care explodează, să se determine câte bombe rămân intacte la finalul șirului de explozii declanșate.
Date de intrare
Fișierul de intrare bomber.in conține pe prima linie numerele n I, fiecare dintre următoarele n linii conține câte trei numere x y p, cu semnificația din enunț.
Date de ieșire
Fișierul de ieșire bomber.out va conține pe prima linie numărul C, reprezentând numărul de bombe rămase neexplodate.
Restricții și precizări
1 ≤ n ≤ 1001 ≤ I ≤ n- coordonatele
x ysunt numere întregi, iar puterilepsunt numere naturale -200 ≤ x , y ≤ 200- *
1 ≤ p ≤ 30
Exemplu
bomber.in
9 5 0 3 2 -1 1 3 1 4 1 3 4 4 -1 -2 3 3 1 3 0 -4 2 3 -2 5 4 -1 2
bomber.out
4
Explicație
Bombele sunt dispuse ca în desen:

Mai întâi va exploda bomba colorată cu verde, apoi cele colorate cu roșu, apoi cea colorată cu mov, apoi cea colorată cu negru.
Cele 4 bombe colorate cu albastru nu vor exploda.
#include <bits/stdc++.h>
using namespace std;
ifstream cin("bomber.in");
ofstream cout("bomber.out");
int n , I;
struct shen
{
int x , y , p;
}v[101];
bool puscate[101];
int dist(int a , int b , int c , int d)
{
return sqrt((a - c) * (a - c) + (b - d) * (b - d));
}
void pusc(int i , int j , int putere , int q)
{
puscate[q]=1;
for(int k = 1 ; k <= n ; ++k)
{
if(dist(v[k].x , v[k].y , i , j) <= putere && k!=q && puscate[k]==0)
pusc(v[k].x , v[k].y , v[k].p , k);
}
}
int main()
{
cin >> n >> I;
for(int i = 1 ; i <= n ; ++i)
cin >> v[i].x >> v[i].y >> v[i].p;
pusc(v[I].x , v[I].y , v[I].p , I);
int cnt=0;
for(int i = 1 ; i <= n ; ++i)
if(puscate[i]==0)
cnt++;
cout << cnt;
return 0;
}