Se consideră un poligon convex cu N laturi. Se vor efectua N - 1 mutări. O mutare constă în alegerea a două puncte A și B vecine pe poligon și mutarea punctului A în B (vezi figura). Costul mutării este egal cu distanța euclidiană dintre A și B. După mutare punctul A este asimilat de B, iar procesul se reia pe noul poligon. Se cere costul total minim al unei succesiuni de N - 1 mutări care reduce poligonul la un singur punct, precum și o modalitate de a obține acest cost.

Cerinţe
Dându-se T poligoane convexe, să se determine:
- Costul minim
ansal unei succesiuni de mutări care reduce poligonul la un singur punct; - O succesiune de mutări de cost minim.
Date de intrare
Fișierul de intrare poligon.in conține pe prima linie un număr întreg p, reprezentând numărul cerinței ce se cere a fi rezolvată.
Pe a doua linie a fișiereului de intrare se va afla T, reprezentând numărul de poligoane ce urmează să fie citite. Apoi, urmează cele T teste. Fiecare test are următoarea structură:
- pe prima linie numărul natural
N, reprezentând numărul de laturi ale poligonului; - pe următoarele
Nlinii câte2numere întregixșiy, separate printr-un spațiu, reprezentând coordonatele vârfurilor poligonului curent, Vârfurile sunt date în ordine trigonometrică.
Date de ieşire
Fișierul de ieșire poligon.out va conține, în funcție de valoarea lui p, următoarele informații:
- Dacă
p = 1se rezolvă doar cerința1. Pentru fiecare dintre celeTteste se va afișa câte un număr realanspe o linie, cu semnificația din enunț. - Dacă
p = 2se rezolvă doar cerința2. Pentru fiecare din celeTteste se vor afișa câteN-1linii, fiecare dintre aceste fiind de formaA B, reprezentând mutările în ordinea în care acestea se efectuează.
Restricţii și precizări
1 ≤ T ≤ 51 ≤ N ≤ 2000- Pentru toate vârfurile poligonului
-1 000 000 ≤ x, y ≤ 1 000 000 - Nu vor exista
2vârfuri ale poligonului aflate la aceleași coordonate. - Poligonul nu este neapărat strict convex. Cu alte cuvinte, pot exista oricâte vârfuri consecutive coliniare.
- Pentru teste în valoare de
5puncte,N ≤ 7; - Pentru alte teste în valoare de
10puncteN ≤ 15; - Pentru alte teste în valoare de
15puncteN ≤ 50; - Pentru alte teste in valoare de
15puncteN ≤ 100; - Pentru alte teste în valoare de
15puncteN ≤ 500; - Pentru alte teste în valoare de
40puncteN ≤ 2000; - Pentru rezolvarea cerinței
1. se acordă80%din punctajul asociat testului. - Pentru rezolvarea cerinței
2. se acordă20%din punctajul asociat testului. - Valoarea lui
ansse va considera corectă dacă aceasta diferă față de răspunsul corect prin maxim . - ATENȚIE! După o mutare
A B(în urma căreia vârfulAa fost asimilat de vârfulB), o mutare de formaA CsauC Ava fi considerată invalidă.
Exemplu
poligon.in
1
2
4
0 0
1 0
1 1
0 1
5
0 0
8 0
8 10
4 20
0 10
poligon.out
3
36.770329614269
Explicație
În acest caz p = 1, deci se va rezolva doar cerința 1.
Fișierul conține T = 2 poligoane.
Vârfurile primului poligon sunt (0, 0), (1, 0), (1, 1), (0, 1). Costul minim asociat unei
succesiuni de mutări de cost minim este 3.
Vârfurile celui de-al doilea poligon sunt (0, 0), (8, 0), (8, 10), (4, 20), (0, 10). Costul minim asociat unei succesiuni de mutări de cost minim este 36.770329614269.
poligon.in
2
2
4
0 0
1 0
1 1
0 1
5
0 0
8 0
8 10
4 20
0 10
poligon.out
3 2
4 1
2 1
4 3
5 3
3 2
2 1
Explicație
În acest caz p = 2, deci se va rezolva doar cerința 2.
Fișierul conține T = 2 poligoane.
Vârfurile primului poligon sunt (0, 0), (1, 0), (1, 1), (0, 1). Costul minim asociat unei succesiuni de mutări de cost minim este 3. O succesiune de mutări de cost minim este:
3 2
4 1
2 1
Vârfurile celui de-al doilea poligon sunt (0, 0), (8, 0), (8, 10), (4, 20), (0, 10). Costul minim asociat unei succesiuni de mutări de cost minim este 36.770329614269. O succesiune de mutări de cost minim este:
4 3
5 3
3 2
2 1