- Time limit: 3.00 s
- Memory limit: 128 MB
Syötteenä annetaan yhtenäinen alue tasossa, ja lista kyselypistepareja siten, että kaikki pisteet ovat alueen sisäpisteitä. Tehtävänäsi on laskea jokaiselle pisteparille lyhyimmän alueen sisällä kulkevan reitin pituus pisteiden välillä. Kuten edellisessä tehtävässä, aluetta rajaa yksi monikulmio ja lisäksi siinä on monikulmion muotoisia reikiä.
Syöte
Syötteen ensimmäisellä rivillä ovat luvut , ja : monikulmioiden lukumäärä, kaikkien monikulmioiden kulmapisteiden yhteismäärä ja kyselypisteparien lukumäärä. Seuraavaksi ilmoitetaan jokainen monikulmio. Monikulmio alkaa rivillä, jossa on monikulmion kulmapisteiden lukumäärä , ja tämän jälkeen seuraa jokaisen kulmapisteen X- ja Y-koordinaatit, jokainen kulmapiste omalla rivillään. Monikulmioiden jälkeen ilmoitetaan kyselypisteparia, jokainen omalla rivillään muodossa .
Ensimmäinen monikulmio on tasoalueen ulkoraja ja loput monikulmioista ovat tasoalueen reikiä. Ensimmäinen monikulmio on suunnistettu myötäpäivään ja loput vastapäivään. Mikään monikulmioista ei leikkaa itseään tai muita monikulmioita, eivätkä mitkään kolme kulmapistettä ole samalla suoralla.
Tuloste
Ilmoita jokaista kyselypisteparia kohden lyhyimmän reitin pituus omalla rivillään.
Rajat
- Koordinaatit ovat itseisarvoltaan enintään
Mainos
Edellisen tehtävän debuggaustyökalusta voi olla apua myös tässä tehtävässä, ks. http://www.cs.helsinki.fi/u/totalvit/vis/visgraph.html.
Esimerkki
Syöte:
2 7 2 4 0 0 0 4 6 4 6 0 3 1 2 3 1 3 3 1 1 4 2 1 1 4 1
Tuloste:
3.414213562373095 3