hamilton

Time limit: 0.01s Memory limit: 1MB Input: Output:

Dubota este acum poliţist în toată regula şi a primit misiunea de a patrula NN obiective strategice. Cele NN obiective sunt conectate prin MM drumuri bidirecţionale. Dubota vrea să găsească un traseu cât mai lung de obiective pe care să patruleze. Un traseu este o succesiune de noduri o1,o2,oKo_1, o_2, \dots o_K astfel încât oiojo_i \neq o_j, ij\forall i \neq j şi există drum de la oio_i la oi+1o_{i+1} pentru 1i<K1 \leq i < K şi drum între o1o_1 si oKo_K.

Cerință

Sa se găsească un traseu cât mai lung de obiective pe care Dubota să-l patruleze.

Date de intrare

Pe prima linie a fisierului x-hamilton.in se găsesc două numere, NN şi MM. Pe urmatoarele MM linii sunt cate 22 numere, uu, vv, reprezentând un drum de la obiectivul uu la obiectivul vv.

Date de ieșire

Pe prima linie a fişierului x-hamilton.out se va găsi lungimea celui mai lung traseu găsit, urmat pe a doua linie de descrierea ciclului, prin indicarea indicilor nodurilor de pe traseu.
Vi se pun la dipozitie cele 1010 fişiere de intrare care sunt folosite pentru evaluare, avand numele 0-hamilton.in, 1-hamilton.in \dots 9-hamilton.in. Pentru fiecare fişier de intrare x-hamilton.in se cere să generaţi un fişier de ieşire x-hamilton.out în care să scrieţi traseul cerut. Fişierele vor fi trimise unul câte unul.

Restricții și precizări

  • Punctajul pe un test se calculeaza astfel, unde KK e lungimea drumului afisat:
    • Pentru N5000N \leq 5000: max(0,10N+K)\max(0, 10 - N + K)
    • Pentru N>5000N > 5000: 10(KN)6\lfloor 10 \cdot \left( \frac{K}{N} \right)^6 \rfloor.

Exemplu

hamilton.in

8 12
1 2
1 6
2 3
2 4
2 6
3 5
3 7
4 6
4 7
5 8
6 7
7 8

hamilton.out

8
1 2 3 5 8 7 4 6

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