Orașul Alexandria a fost luat cu asalt de grupuri de durants, pokemoni furnică! Aceștia și-au construit mușuroaie numerotate de la la , conectate între ele prin tuneluri bidirecționale, astfel încât să se poată ajunge dintr-un mușuroi în oricare altul urmând tunelurile. Definim distanța ca fiind egală cu numărul minim de tuneluri care trebuie traversate pentru a ajunge din mușuroiul în mușuroiul .
Candela, liderul echipei Valor, a convocat flareoni, al -lea dintre aceștia fiind staționat lângă mușuroiul și având o mișcare Lava Plume de putere . Un atac de tip Lava Plume de putere efectuat la mușuroiul , adaugă la gradul de distrugere al mușuroiului valoarea .
Se cere să se determine, pentru fiecare mușuroi , gradul de distrugere al acestuia după atacurile tuturor celor flareoni.
Implementare
Programul vostru va conține o funcție:
void solve(int N, int M, int* V, int* Pos, int* Power);
Parametrii , respectiv reprezintă numărul de mușuroaie, respectiv numărul de flareoni. Parametrul este un array de lungime , indexat de la 0, elementul de pe poziția al acestuia reprezentând existența unui tunel între mușuroaiele și . Parametrii și sunt două array-uri de dimensiune , indexate de la 0, cu semnificația că al -lea flareon se află la poziția , și are o mișcare Lava Plume de putere .
Odată ce ați găsit cele grade de distrugere, trebuie să apelați funcția, implementată de grader:
void answer(long long* Dmg);
Când apelați această funcție trebuie sa transmiteți parametrul , un array de lungime indexat de la , al -lea element al acestuia reprezentând gradul de distrugere al mușuroiului .
Pe lângă funcția pe care o veți implementa, puteți declara variabile locale sau globale și puteți implementa alte funcții ajutătoare. Se recomandă ca variabilele globale și funcțiile să fie declarate cu modificatorul static
.
Testare
Pentru a vă testa local soluțiile, vă oferim programul main.cpp
și header-ul flareon.h
. Programul main.cpp
citește din fișierul de intrare flareon.in
, apelează funcția solve
a concurentului și afișează array-ul dat ca parametru prin funcția answer
în fișierul flareon.out
.
Pe prima linie a fișierului flareon.in
se află numerele naturale și . Pe a doua linie se află numere naturale, reprezentând elementele array-ului . Pe următoarele linii se află perechi de întregi, a -a pereche reprezentând numerele și .
În fișierul de ieșire flareon.out
vor fi afișate numere naturale, al -ulea dintre acestea reprezentând numărul .
Restricții și precizări
- Pentru
20%
din teste, și - Pentru
70%
din teste, și - Lângă un mușuroi se pot afla mai mulți flareoni.
Exemplu
flareon.in
4 3
1 1 3
2 2
3 2
4 10
flareon.out
10
9
11
11
Explicație
Funcția solve
va primi parametrii: , , , , .
Drumurile directe între mușuroaie sunt .