Laiko ribojimas: 1s
Atminties ribojimas: 256MB
Duomenų failas: pcb.in
Rezultatų failas: pcb.out
Spausdintinė schemos plokštė (BOI 2010)
Spausdintinėje schemos plokštėje laidai yra išdėstomi nelaidžioje medžiagoje. Kadangi tame pačiame sluoksnyje esantys laidai negali kirstis, naudojamos plokštės turinčios keletą nelaidžia medžiaga atskirtų sluoksnių. Daugiau sluoksnių turinčios plokštės yra brangesnės, todėl gamintojai bando paskirstyti reikalingus laidus į sluoksnius taip, kad reikėtų kuo mažiau sluoksnių. Šioje užduotyje tirsime plokštes, kuriose kiekvienas laidas jungia du priešingose plokštės pusėse esančius įvesties-išvesties prievadus, ir stengsimės sumažinti tokios plokštės kainą. Kaip pavyzdį, panagrinėkime schemą kairiajame paveiksle. Jei vienas laidas turi sujungti A ir B, o kitas C ir D, tokia plokštė gali turėti vieną sluoksnį, kaip parodyta viduriniajame paveiksle. Tačiau laidas, jungiantis A ir C, bei laidas, jungiantis B ir D, negali būti tame pačiame sluoksnyje, kaip parodyta dešiniajame paveiksle.
Užduotis
Parašykite programą, kuri pagal N laidų prievadų vietas dydžio lentoje nustatytų, kiek mažiausiai sluoksnių reikia, norint sutalpinti visus laidus. Laikykite, kad laidų plotis yra labai mažas lyginant su atstumu tarp prievadų. Tai reiškia, kad tarp bet kurių dviejų laidų visada yra vietos trečiam.
Pradiniai duomenys
Pirmoje eilutėje įrašytas laidų kiekis . Kiekvienoje tolesnių N eilučių yra du tarpu atskirti sveikieji skaičiai, ir . Jie reiškia, kad i-asis laidas turi jungti prievadus, esančius taškuose ir . Visi prievadai yra skirtingose vietose.
Rezultatai
Vienintelėje eilutėje turi būti vienas sveikasis skaičius - mažiausias sluoksnių, reikalingų sutalpinti visus laidus, kiekis.
Pavyzdžiai
Pradiniai duomenys | Rezultatai |
---|---|
1 5 5 |
1 |
5 3 0 2 2 4 4 1 3 0 1 |
3 |