Galaxia

Time limit: 0.2s Memory limit: 64MB Input: galaxia.in Output: galaxia.out

Civilizația avansată a moisiliștilor trăiește în Galaxia G. care este compusă din NN corpuri cerești, numerotate de la 11 la NN. Acestea sunt de două tipuri: planete și sateliți, fiecare corp având atribuită o gravitație (GiG_{i}). Între două corpuri cerești poate exista un lift care face posibilă deplasarea între ele. Energia necesară deplasării cu liftul între două corpuri, ii și jj, este calculată astfel:

  • Dacă ambele corpuri sunt planete, costul energetic este egal cu valoarea celui mai mic multiplu comun al gravitațiilor acestora ( cmmmc(Gi,Gj)cmmmc(G_{i}, G_{j}) );
  • Dacă un corp este o planetă iar celălalt este un satelit, costul energetic este egal cu valoarea celui mai mare divizor comun între gravitațiile acestora ( cmmdc(Gi,Gj)cmmdc(G_{i}, G_{j}) );
  • Între doi sateliți, costul energetic va fi mereu 11.

Tragic, o planetă a fost infectată cu un virus foarte contagios. Dacă o planetă ii este infectată, atunci toate planetele conectate printr-un lift vor fi, la rândul lor, infectate după o zi de la infectarea planetei ii (dacă nu sunt deja infectate). Din fericire, sateliții nu pot fi infectați și nici nu pot răspândi virusul, aceștia nefiind suficient de populați. Prin urmare, regina Galaxiei G. alege o planetă drept refugiu și își dorește să afle constul energetic minim necesar pentru a se deplasa de la aceasta la orice altă planetă.

Cerințe

Regina, fiind ocupată cu alte lucruri, îi porunceste lui Rareș, moisilian priceput, să afle:

  1. Fiind specificată planeta KK din care începe răspandirea infecției în ziua 11, după câte zile vor fi infectate celelalte planete?
  2. Fiind aleasă planeta KK ca refugiu de către regină, care este costul energetic minim necesar pentru a ajunge de la planeta KK la oricare altă planetă?

Date de intrare

În fișierul de intrare galaxia.in avem:

  • Prima linie conține numărul CC, care va avea valoarea 11, respectiv 22, indicând cerința care trebuie rezolvată
  • A doua linie conține numerele NN și MM, care reprezintă numărul de corpuri cerești, respectiv numărul de lifturi dintre corpuri;
  • Pe următoarele NN linii se dau câte două numere, TiT_{i} și GiG_{i}, care reprezintă tipul corpului ceresc ii (11 pentru planetă, 00 pentru satelit) și gravitația acestuia (pe linia i+2i + 2 se găsesc tipul și gravitația corpului ii);
  • Pe următoarele MM linii se regasesc câte două numere, AA și BB, semnificând că exista un lift între corpurile AA și BB;
  • Pe ultima linie se dă valoarea KK, care reprezintă:
    • Indicele planetei de la care începe infecția, dacă C=1C=1;
    • Indicele planetei alese de regină drept refugiu, dacă C=2C=2.

Date de ieșire

În fișierul de ieșire galaxia.out avem:

  • Dacă C=1C=1, se va afișa mai întâi NpN_{p}, numărul de planete, și pe următoarele NpN_{p} linii se vor afișa, cu spațiu între ele, ii și TiT_{i}, semnificând că planeta ii va fi infectată după TiT_{i} zile. (în cazul în care planeta nu va fi infectată niciodată, Ti=1T_{i} = -1);
  • Dacă C=2C=2, se va afișa mai întai NpN_{p}, numărul de planete, și pe următoarele NpN_{p} linii se vor afișa, cu spațiu între ele, ii si EiE_{i}, semnificând că, pentru a ajunge la planeta ii, costul energetic minim necesar este EiE_{i} (dacă K=iK = i, Ei=0E_{i} = 0).

Restricții și precizări

  • Pentru ambele cerințe, planetele trebuiesc afișate în ordine crescătoare
  • C{1,2}C \in \{1, 2\}
  • 1N50 0001 \le N \le 50 \ 000
  • Se dă cel puțin o planetă (Np1N_{p} \ge 1)
  • 0M300 0000 \le M \le 300 \ 000
  • Ti{0,1};1Gi1 000 000T_{i} \in \{0, 1\}; 1 \le G_{i} \le 1 \ 000 \ 000, unde 1iN1 \le i \le N
  • 1KN1\le K \le N
  • Corpul cerest cu indicele KK va fi întotdeauna planetă.
  • Putem să ne deplasăm de la oricare corp ceresc AA la oricare corp BB, cu condiția ABA ≠ B
# Punctaj Restricții
1 20 C=1;1N100C = 1; 1 ≤ N ≤ 100
2 30 C=1;1N50 000C = 1; 1 ≤ N ≤ 50 \ 000
3 30 C=2;1N100C = 2; 1 ≤ N ≤ 100
4 20 C=2;1N50 000C = 2; 1 \le N \le 50 \ 000

Exemplul 1

galaxia.in

1
9 13
0 5
1 8
1 2
0 7
0 9
1 10
0 3
1 20
1 14
1 2
1 3
1 4
2 4
3 5
3 7
4 5
4 6
4 8
4 9
5 8
6 7
6 8
6

galaxia.out

5
2 -1
3 -1
6 1
8 2
9 -1

Exemplul 2

galaxia.in

2
9 13
0 5
1 8
1 2
0 7
0 9
1 10
0 3
1 20
1 14
1 2
1 3
1 4
2 4
3 5
3 7
4 5
4 6
4 8
4 9
5 8
6 7
6 8
6

galaxia.out

5
2 2
3 2
6 0
8 2
9 8

Explicație

  • Corpurile verzi cu numărul în bold sunt planetele iar corpurile roșii cu numărul în italic sunt sateliții; în imagine sunt evidențiate costurile energetice între corpurile cerești.

În primul exemplu cerința este 11 și 66 este infectată în ziua 11. Doar planeta 88 este conectată de planeta 66, deci planeta 88 va fi infectată in ziua 22. Infecția nu ajunge la celelalte planete deoarece planetele 66 și 88 sunt izolate de ele prin sateliții 44, 55 și 77.

În al doilea exemplu cerința este 22 deci trebuie să aflăm costul de energie minim necesar pentru a ajunge de la fiecare planetă la planeta 66. Astfel, drumul 2462→4→6 are costul 22, drumul 3763→7→6 are costul 22, drumul 8468→4→6 are costul 22 și drumul 9469→4→6 are costul 88.

Log in or sign up to be able to send submissions!