Feladat: S.70 Korcsoport: - Nehézségi fok: -
Füzet: 2012/március, 166 - 167. oldal  PDF  |  MathML 

A szöveg csak Firefox böngészőben jelenik meg helyesen. Használja a fenti PDF file-ra mutató link-et a letöltésre.

Béla szereti mindig jól átlátni a környezetét, így miután Nevesincs városba költözött, első dolga az volt, hogy rajzolt egy térképet a városról, és följegyezte rajta minden egyes utca hosszát ‐ természetesen mikrométerben, mivel a pontatlanságot ki nem állhatja. Ezek után persze az útvonalait is nagyon gondosan tervezi meg: most például azt eszelte ki, hogy úgy jusson el A-ból B-be, hogy az útvonalán előforduló leghosszabb és legrövidebb utca hosszának különbsége minimális legyen. Írjunk programot, amely meghatároz Béla számára egy ilyen tulajdonságú útvonalat.
A program a város leírását a standard bemenetről olvassa. Ennek első sorában egyetlen szóközzel elválasztva a kereszteződések N száma, illetve az ezeket összekötő utcák M száma található (1N1000, 0M5000). A második sor az A és B kereszteződések sorszámát tartalmazza, az ezt követő M darab sor pedig rendre egy-egy utcát ír le XiYiLi formátumban, ahol Xi és Yi az i-edik utca által összekötött két kereszteződés sorszáma, Li pedig az i-edik utca hossza (1Li109). Feltehetjük, hogy egy utca két végpontja mindig különbözik egymástól, valamint hogy nincs két olyan utca, melyek mindkét végpontja megegyezik. A kereszteződéseket 0-tól N-1-ig sorszámozzuk.
A standard kimenet egyetlen sorába egy darab szám kerüljön: ha elérhető A-ból B, akkor az elérhető legkisebb különbség, ellenkező esetben pedig -1.

 
 

A maximális pontszám eléréséhez a programnak a legnagyobb teszteseteket is legfeljebb 1 másodperc alatt meg kell oldania.
Beküldendő egy tömörített s70.zip állományban a program forráskódja (s70.pas, s70.cpp, ...) az .exe és más, a fordító által generált állományok nélkül, valamint a program rövid dokumentációja (s70.txt, s70.pdf, ...), amely tartalmazza a megoldás rövid leírását, és megadja, hogy a forrás melyik fejlesztőkörnyezetben fordítható.