Guia Pesao P62371


Statement
 

pdf   zip

Per moure’s per París, un membre dels equips UPC (aka Pesao) es va oferir per guiar el grup des d’un punt d’origen ss fins a un punt de destí tt. Malgrat les ganes que hi posava, els camins que acabava escollint no eren mai els millors: el grup sempre s’acostava a tt, però en cap moment s’agafava un carrer que hi anés òptimament.

Específicament, sigui d(p)d(p) la distància mínima des de cada punt pp fins a tt. Si en algun moment s’estava en el punt xx, i hi havia un carrer de longitud \ell que connectava xx amb un altre punt yy, es podia passar pel carrer només si es donaven les dues condicions següents:

  • d(y)<d(x)d(y) < d(x), i.e., la distància a tt sempre disminuia estrictament.

  • No hi havia cap camí de distància mínima per anar des d’xx fins a tt que passés pel carrer. En altres paraules, +d(y)>d(x)\ell + d(y) > d(x).

De quantes maneres es podria haver fet una ruta que anés des d’ss fins a tt tot complint les condicions anteriors?

Entrada

L’entrada consisteix en diversos casos, només amb nombres enters. Cada cas comença amb el nombre de punts nn, el nombre de carrers bidireccionals mm, l’origen ss i el destí tt, amb sts \ne t. Segueixen mm ternes amb la informació de cada carrer xx yy \ell, amb xyx \ne y i 11041 \le \ell \le 10^4. Podeu suposar 2n51042 \le n \le 5 \cdot 10^4 i 0m5n0 \le m \le 5n. Els punts es numeren entre 0 i n1n-1. Pot haver-hi més d’un carrer entre dos punts donats. També pot ser que no hi hagi cap camí entre ss i tt.

Sortida

Per a cada cas, escriviu el nombre de camins possibles mòdul 108+710^8 + 7.

Public test cases
  • Input

    2 2 0 1
    0 1 100  0 1 200
    
    2 2 0 1
    0 1 100  0 1 100
    
    5 0 4 2
    
    5 12 4 2
    4 0 10  0 4 20  4 1 15  3 4 30
    0 2 20  0 2 10  0 3 7   3 2 14
    3 2 5   1 0 9   2 1 6   2 1 12
    

    Output

    1
    0
    0
    5
    
  • Information
    Author
    Martí Oller
    Language
    Catalan
    Official solutions
    C++
    User solutions
    C++