Arbset

Time limit: 1s Memory limit: 256MB Input: arbset.in Output: arbset.out

Mioara are un arbore cu NN noduri, unde rădăcina este nodul 11, şi unde fiecare nod ii are câte o valoare viv_i între 11 şi NN. Toate valorile sunt distincte. O submulţime AA de noduri se numeşte bună dacă şi numai dacă:

  1. Oricare două noduri i,jAi, j ∈ A, unde ii este strămoş al lui jj, satisfac vi<vjv_i < v_j;
  2. Pentru oricare două noduri i,jAi, j ∈ A, dacă ll este cel mai adânc strămos, comun al lui ii şi jj, atunci lAl ∈ A.

Cerință

Mioara este curioasă: care este suma valorilor A|A| (adică mărimea lui AA) pentru toate mulţimile AA bune?

Date de intrare

Fişierul de intrare arbset.in conţine pe primul rând numărul NN. Pe a doua linie se află valorile v1,,vNv_1, \dots, v_N. Urmează N1N − 1 rânduri, fiecare conţinând două valori xx si yy, ce indică existenţa unei muchii de la xx la yy.

Date de ieșire

Fişierul de ieşire arbset.out conţine răspunsul cerut, modulo 109+7{10}^{9} + 7.

Restricții și precizări

# Punctaj Restricții
1 10 N20N \leq 20
2 20 N2 000N \leq 2\ 000
3 10 N300 000N \leq 300\ 000, oricare nod are cel mult 2 muchii incidente
4 10 N300 000N \leq 300\ 000, cel mult 1 nod are mai mult de o muchie incidenta
5 30 N300 000N \leq 300\ 000, oricare nod are cel mult 3 muchii incidente
6 20 N300 000N \leq 300\ 000

Exemplu

arbset.in

4
2 1 3 4
1 2
1 3
1 4

arbset.out

11

Explicație

Mulţimile bune sunt:

  • \emptyset (cu mărimea 00);
  • {1}\{1\}, {2}\{2\}, {3}\{3\}, {4}\{4\} (cu mărimea 11);
  • {1,3}\{1, 3\}, {1,4}\{1, 4\} (cu mărimea 22);
  • {1,3,4}\{1, 3, 4\} (cu mărimea 33).

Astfel rezultatul este 1111.

Log in or sign up to be able to send submissions!