Nekādas kafijas!

3
Latvijas Informātikas olimpiādes logo

Uzdevums no 2026. g. LIO valsts kārtas; 8.-10. klasei.

Stāsts

Lindai ļoti garšo kafija, bet tagad viņa vēlas tās dzeršanu atmest. Pilsētā šobrīd noris kampaņa, kas motivē iedzīvotājus dzert mazāk kafijas, tāpēc atsevišķos kvartālos ir izvietoti reklāmas plakāti, kas mudina atturēties no kafijas lietošanas. Pilsētu veido NN kvartāli, kurus savieno MM ceļi. Starp katriem diviem kvartāliem var būt ne vairāk kā viens ceļš. No katra kvartāla var nokļūt katrā citā vienā vai vairākos veidos.

Linda katru rītu dodas no mājām uz darbu. Viņa ir ļoti nogurusi, tāpēc, ja pa ceļam kādā kvartālā ir kafijas automāts, Linda gribēs no tā paņemt kafiju. Vienīgais, kas var Lindai palīdzēt atturēties, ir iepriekš minētās kampaņas reklāma, jo tad Lindai palielinās ticība sevī. Reklāmu plakātu izmēri ir dažādi, un katrai reklāmai ir savs ietekmes attālums. Ja ietekmes attālums ir 11, tad reklāma redzama tikai kvartālā, kurā tā ir izvietota, bet, ja ietekmes attālums ir 22, tad arī blakus kvartālos (kvartālos, uz kuriem var nokļūt, izmantojot vienu ceļu), un tā tālāk.

Attēlā redzama pilsētas kartes ilustrācija.

Pilsētas kartes piemērs
Pilsētas kartes piemērs

Lindas māja (apzīmēta ar HH) atrodas 44. kvartālā, bet darbs (apzīmēts ar DD) - 66. kvartālā. Kafijas automāti (apzīmēti ar K1,K2,K3K_1,K_2,K_3) atrodas kvartālos 1,5,81, 5, 8 (tie ir apvilkti ar biezāku līniju). Reklāmas R1R_1 un R2R_2 atrodas attiecīgi 22. un 88. kvartālā. R1R_1 ietekmes attālums ir 22, bet R2R_2 ietekmes attālums ir 11. Reklāmu ietekmētie kvartāli ir iekrāsoti sarkanā krāsā. Ja Linda atradīsies 55. kvartālā, tad viņa padzersies kafiju, jo šis kvartāls nav reklāmas ietekmes zonā.

Konkrētajā gadījumā Lindai ir divi maršruti, kā nokļūt no mājām uz darbu, nedzerot kafiju:

  • 1. maršruts (garums 4): 4→1→2→3→64 \to 1 \to 2 \to 3 \to 6
  • 2. maršruts (garums 5): 4→7→8→9→10→64 \to 7 \to 8 \to 9 \to 10 \to 6

Uzraksti datorprogrammu, kas palīdzēs Lindai atrast īsākā maršruta no mājām uz darbu, kurā viņa nepadzersies kafiju, garumu! Ja no kafijas dzeršanas izvairīties nevar, jāizvada −1-1.

Ievaddati

Pirmajā rindā doti četri naturāli skaitļi - kvartālu skaits NN (N≤105N \leq 10^5), ceļu skaits MM (M≤105M \leq 10^5), mājas kvartāla numurs HH (1≤H≤N1 \leq H \leq N) un darba kvartāla numurs DD (1≤D≤N,H≠D1 \leq D \leq N, H \neq D).

Nākamajās MM rindās katrā doti divi naturāli skaitļi uiu_i un viv_i (1≤ui,vi≤N1 \leq u_i, v_i \leq N, ui≠viu_i \neq v_i) - savienojums starp kvartāliem uiu_i un viv_i.

Nākamajā rindā dots vesels nenegatīvs skaitlis - reklāmu skaits RR (R≤NR \leq N). Nākamajās RR rindās doti divi naturāli skaitļi rir_i un did_i (1≤ri≤N1 \leq r_i \leq N, 1≤di≤N1 \leq d_i \leq N, visiem i≠ji \neq j ir spēkā ri≠rjr_i \neq r_j) - kvartāls, kur izvietota reklāma, un reklāmas ietekmes attālums.

Nākamajā rindā dots vesels nenegatīvs skaitlis - kafijas automātu skaits KK (K≤NK \leq N). Nākamajā rindā doti KK naturāli skaitļi kik_i (1≤ki≤N1 \leq k_i \leq N, ki≠Hk_i \neq H, ki≠Dk_i \neq D, visiem i≠ji \neq j ir spēkā ki≠kjk_i \neq k_j) - kvartāli, kuros atrodas kafijas automāti.

Izvaddati

Vienīgajā rindā jāizvada vesels skaitlis - īsākā ceļa garums no mājām uz darbu, kurā Linda nedzer kafiju. Ja šāds ceļš neeksistē, jāizvada −1-1.

Apakšuzdevumi un to vērtēšana

#Apakšuzdevuma aprakstsPunkti
1.

Uzdevuma tekstā dotie trīs testi

2
2.

K=0K=0

8
3.

R=0R=0

10
4.

R>0R>0 un max⁡(di)=1\max(d_i)=1, proti, visām reklāmām ietekmes attālums ir 11

20
5.

R>0R>0 un max⁡(di)≤10\max(d_i) \leq 10

30
6.

Bez papildu ierobežojumiem

30
Apakšuzdevumu punktu summa = 100.

Piemēri

Ievaddati

10 12 4 6 1 2 1 4 2 3 3 6 4 5 4 7 5 6 5 8 6 10 7 8 8 9 9 10 2 2 2 8 1 3 1 5 8 Kopēt kodu

Izvaddati

4 Kopēt kodu

Ievaddati

10 12 4 6 1 2 1 4 2 3 3 6 4 5 4 7 5 6 5 8 6 10 7 8 8 9 9 10 2 2 1 8 1 3 1 5 8 Kopēt kodu

Izvaddati

5 Kopēt kodu

Ievaddati

10 12 4 6 1 2 1 4 2 3 3 6 4 5 4 7 5 6 5 8 6 10 7 8 8 9 9 10 0 3 1 5 8 Kopēt kodu

Izvaddati

-1 Kopēt kodu

1. apakšuzdevuma ievaddati

6 6 6 4 2 1 4 3 6 1 1 5 2 5 1 4 1 6 2 1 1 Kopēt kodu
8 8 3 8 3 6 4 7 5 2 8 1 4 3 4 1 7 2 8 4 2 5 3 3 3 2 1 2 Kopēt kodu
10 12 2 9 6 8 2 6 9 1 8 9 9 10 6 5 10 2 4 5 8 7 6 3 7 9 6 9 2 6 2 5 4 3 5 3 10 Kopēt kodu