Atenţie! Aceasta este o versiune veche a paginii, scrisă la 2016-05-26 20:39:26.
Revizia anterioară   Revizia următoare  

 

Fişierul intrare/ieşire:robo.in, robo.outSursăACM ICPC - Romanian Programming Contest 2016
AutorMatei PopoviciAdăugată destefanrStefan Ruseti stefanr
Timp execuţie pe test1 secLimită de memorie65536 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Robo

ROBO este un robot care poate executa o secventa de actiuni pentru a repara o statie orbitala. ROBO are senzori care ii permit sa detecteze "starea curenta" in care se afla statia. O stare de succes corespunde situatiei in care statia a fost reparata. Starea curenta si actiunea aleasa de ROBO determina in mod unic starea urmatoare. Un exemplu este ilustrat mai jos:

In exemplul de mai sus, starile sunt reprezentate prin noduri (cercuri). Actiunile eticheteaza muchiile dintre noduri. Starea initiala este "0", iar cea de succes este 4.

Analizand modelul de mai sus, ROBO observa ca poate realiza reparatia daca executa secventa de actiuni '''aba''' (trecand prin starile 0,1,4), dar si daca executa '''bbba''' (trecand prin starile 0,2,3,2,4). ROBO crede ca poate inlocui modelul sau intern, ilustrat mai sus, cu un model mai bun, adica unul in care:

* numarul de stari este '''mai mic''';
* exact '''aceleasi secvente''' de actiuni conduc la reparatia statiei;

Un exemplu de model mai bun este dat in continuare:

ROBO observa ca (spre exemplu) '''aba''' si '''bbba''' sunt secvente de actiuni care conduc la repararea statiei si in modelul imbunatatit.
ROBO e convins ca poate gasi un model si mai bun. Acesta este cel din figura urmatoare:

ROBO nu poate gasi un model mai bun decat acesta din urma - unul cu numar de stari mai mic decat 3.

Pentru un model oarecare '''M''', ROBO cauta '''numarul de stari''' al modelului cel mai bun - adica numarul minim de stari cu care putem reprezenta '''M''' astfel incat exact aceleasi secvente de actiuni din '''M''' conduc la reparatia statiei si in modelul imbunatatit.
Modelele au urmatoarele proprietati:

* Starea initiala este intotdeauna etichetata cu "0"
* Pentru fiecare stare si actiune, gasim intotdeauna o stare urmatoare;
* Nu exista stari inaccesibile (stari in care nu putem ajunge prin nici o secventa de actiuni);

Date de intrare

Datele de intrare se citesc din fişierul robo.in.
Pe prima linie se află numărul de teste, T. După aceea, pentru fiecare test sunt citite următoarele informaţii:
* Pe prima linie: numarul de '''stari''' urmat de numarul de '''actiuni''' posibile
* Pe a doua linie: o secventa de numere ce reprezinta '''starile in care statia e reparata'''
* Pe fiecare linie urmatoare: un triplet de forma '''stare actiune stare_urmatoare''',unde '''stare''' si '''stare_urmatoare''' sunt numere iar '''actiune''' este un caracter alfabetic.

Date de ieşire

În fişierul de ieşire robo.out ...

Restricţii

  • ... ≤ ... ≤ ...

Exemplu

robo.inrobo.out
This is some
text written on
multiple lines.
This is another
text written on
multiple lines.

Explicaţie

...

Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?