asfalt

Time limit: 0.03s Memory limit: 16MB Input: asfalt.in Output: asfalt.out

Băştinaşii din insula BuruBuru tocmai au descoperit asfaltul, aşa că şi-au unit cele NN sate (numerotate de la 11 la NN) prin MM drumuri bidirecţionale, fiecare de o lungime dată.

Văzând aceste progrese tehnologice, nişte colonişti au hotărât că vor să pună stăpânire pe insulă. Aceştia pleacă din satul cu indice SS (locul unde au debarcat) şi se indreaptă către capitala băştinaşilor, oraşul DD, mergând pe ruta de lungime minimă (suma lungimilor drumurilor ce alcătuiesc ruta să fie minimă).

Cerință

Băştinaşii doresc să mai amâne atacul coloniştilor, aşa că ar vrea să ştie care este numărul minim de drumuri cărora trebuie să li se mărească lungimea cu cel puţin o unitate astfel încat lungimea rutei de la oraşul SS la orasul DD să crească cu cel puţin o unitate. Deoarece băştinaşii încă nu au descoperit calculatorul, este de datoria voastră să îi ajutaţi!

Date de intrare

Pe prima linie a fişierului asfalt.in se află patru numere NN, MM, SS şi DD cu semnificaţia de mai sus. Următoarele MM linii conţin câte trei numere xx, yy, cc fiecare, semnificând faptul că există un drum între oraşele xx şi yy de lungime cc.

Date de ieșire

Fişierul asfalt.out va conţine pe prima linie numărul minim de drumuri a căror lungime trebuie mărită. Următoarele linii vor conţine fiecare câte două numere naturale, reprezentând indicii oraşelor ce descriu unul din drumurile ce trebuie mărite.

Restricții și precizări

  • 1N5001 \leq N \leq 500
  • 1M5 0001 \leq M \leq 5 \ 000
  • 1c1061 \leq c \leq 10^6
  • 1x,yN1 \leq x, y \leq N
  • orice soluţie ce are un număr minim de drumuri este acceptată
  • nu vor exista mai multe drumuri între două oraşe

Exemplu

asfalt.in

4 4 1 4
1 2 1
1 3 2
2 4 2
3 4 1

asfalt.out

2
1 2
1 3

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