Fişierul intrare/ieşire: | dictree.in, dictree.out | Sursă | Selectie echipe ACM ICPC, UPB 2008 |
Autor | Mihai Patrascu | Adăugată de | |
Timp execuţie pe test | 0.05 sec | Limită de memorie | 13096 kbytes |
Scorul tău | N/A | Dificultate | N/A |
Vezi solutiile trimise | Statistici
Dictree
Pe parcursul acestei probleme, vom numi litera oricare dintre cele 52 de caractere latine (litere mari si mici, care sunt considerate diferite). Numim arbore dictionar un arbore cu radacina, care are fiecare muchie etichetata cu o litera. Un cuvant (succesiune finita de litere) poate fi regasit intr-un arbore dictionar daca exista un drum care coboara in arbore, pornind de la radacina, astfel incat muchiile de pe drum sa fie etichetate cu literele care formeaza cuvantul, in ordine.
Un exemplu valoreaza cat 1000 de cuvinte.
Acest arbore dictionar are 10 noduri.
Urmatoarele cuvinte se pot regasi in acest arbore dictionar: M, MI, MIT, Ma, i, io, ioi, iq, C.
Cateva exemple de cuvinte care nu se pot regasi in acest arbore dictionar: Pascal, a, oi, MIM.
Fiind dat un set de cuvinte, exista o infinitate de arbori dictionar in care se regasesc toate aceste cuvinte. Determinati numarul de noduri ale arborelui cu cele mai putine noduri.
Date de intrare
Pe prima linie a fisierului de intrare dictree.in este scris numarul N de cuvinte. Pe fiecare din urmatoarele N linii se gaseste cate un cuvant (succesiune de litere fara spatii). Cuvintele nu sunt neaparat distincte.
Date de iesire
Fisierul de iesire dictree.out va contine o singura linie, pe care va fi scris numarul minim de noduri ale unui arbore dictionar in care se regasesc cuvintele date.
Restrictii
- 0 ≤ N ≤ 25.000
- 1 ≤ numarul de litere dintr-un cuvant ≤ 100
Exemplu
dictree.in | dictree.out |
---|---|
5 io iq C ioi MIT | 9 |