ACM 1992

döntő



Sorbaállítás ("B" probléma)
A számítógépes hálózatok tervezése során a számítógépeket össze kell kötni egymással. Az így létrejövő hálózat lineáris felépítésű, azaz bármely számítógép pontosan két másikhoz kapcsolódik, kivéve a lánc elején és végén lévő számítógépeket, amelyek csak egy számítógéphez kapcsolódnak. Egy ilyen hálózatot mutat az alábbi ábra, amelyen a számítógépeket fekete pontok jelölik. A számítógép helyzetét síkbeli koordinátákkal írjuk le (a koordinátarendszer nincs feltüntetve az ábrán). A csatlakozó gépek közti távolságot lábban mérjük.

Különböző okokból kívánatos, hogy minimalizáljuk az elhasznált kábel hosszát. Írjunk programot, amely meghatározza, hogy milyen sorrendben kell a gépeket összekötni ahhoz, hogy az elhasznált kábel hossza minimális legyen! A kábelek a föld alatt húzódnak, ezért két szomszédos gép összekapcsolásához szükséges kábel hossza 16 lábbal több, mint a két gép távolsága. Az alábbi képen a fenti hálózat egy optimális kapcsolása látható; a konfigurációhoz szükséges kábelhossz (4+16) + (5+16) + (5,83+16) + (11,18+16)=90,01 láb.

Bemenet:

Az input fájl több adatsort is tartalmazhat. Minden adatsor első sora a hálózatban lévő gépek számát tartalmazza. Egy hálózatban legalább 2, legfeljebb 8 gép van. Ha a hálózatban szereplő gépek száma 0, akkor az az input végét jelöli. A számítógépek számát definiáló sor után következő sorok a hálózatban lévő gépek koordinátáit tartalmazzák. A koordináták egész számok a [0;150] intervallumból. Minden számítógép egyszer van listázva, és bármely pontban legfeljebb egy számítógép van.
Kimenet:
Az outputnak minden hálózatra tartalmaznia kell annak sorszámát (melyet az inputban elfoglalt pozíciója határoz meg), valamint minden egyes kábel darabra egy sort, amely tartalmazza a kábel hosszát, és az összekötött számítógépek koordinátáit! A hálózathoz tartozó utolsó sor a minimálisan szükséges kábel összes hosszát tartalmazza! A kábel darabok listázásánál sorba haladjunk a hálózat egyik végétől a másikig! Kövessük a példa outputban bemutatott formátumot! Az egyes adatsorokhoz tartozó eredményeket egy csillagokat tartalmazó sorral válasszuk el! A távolságokat két tizedes jegyre kerekítsük!
Példa:
 
INPUT.TXT OUTPUT.TXT
6
5 19
55 28
38 101
28 62
111 84
43 116
5
11 27
84 99
142 81
88 30
95 38
3
132 73
49 86
72 111
0
**********************************************************
Hálózat #1
A(z) (5,19) és (55,28) összekötéséhez szükséges kábel hossza: 66,80 láb.
A(z) (55,28) és (28,62) összekötéséhez szükséges kábel hossza: 59,42 láb.
A(z) (28,62) és (38,101) összekötéséhez szükséges kábel hossza: 56,26 láb.
A(z) (38,101) és (43,116) összekötéséhez szükséges kábel hossza: 31,81 láb.
A(z) (43,116) és (111,84) összekötéséhez szükséges kábel hossza: 91,15 láb.
A szükséges kábel hossza: 305,45 láb.
**********************************************************
Hálózat #2
A(z) (11,27) és (88,30) összekötéséhez szükséges kábel hossza: 93,06 láb.
A(z) (88,30) és (95,38) összekötéséhez szükséges kábel hossza: 26,63 láb.
A(z) (95,38) és (84,99) összekötéséhez szükséges kábel hossza: 77,98 láb.
A(z) (84,99) és (142,81) összekötéséhez szükséges kábel hossza: 76,73 láb.
A szükséges kábel hossza: 274,40 láb.
**********************************************************
Hálózat #3
A(z) (132,73) és (72,111) összekötéséhez szükséges kábel hossza: 87,02 láb.
A(z) (72,111) és (49,86) összekötéséhez szükséges kábel hossza: 49,97 láb.
A szükséges kábel hossza: 136,99 láb.