# PBinfo #841 – Bomber – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: Darius

## Enunț

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 ≤ 100
1 ≤ I ≤ n
coordonatele x y sunt numere întregi, iar puterile p sunt 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.

## Cod sursă C++

```cpp
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("bomber.in");
ofstream fout("bomber.out");
int n , m , v[105] , x[105] , y[105] , p[105] , start;
void explozie(int k)
{
	v[k] = 1;
	for(int i = 1 ; i <= n ; i ++)
		if(v[i] == 0 && (x[i] - x[k])*(x[i] - x[k]) + (y[i] - y[k])*(y[i] - y[k]) <= p[k] * p[k] )
			explozie(i);
}
int main(){
	fin >> n >> start;
	for(int i = 1 ; i <= n ; i ++)
			fin >> x[i] >> y[i] >> p[i];
	fin.close();
	explozie(start);
	int cnt = 0;
	for( int i = 1; i <= n ; i ++)
		if(v[i] == 0)
			cnt ++;
	fout << cnt;
	fout.close();
	return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/841)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/841/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-841/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
