Millor que Dijkstra P42012


Statement
 

pdf   zip

Feu un programa que, donat un graf dirigit amb pesos que poden ser 1, 2 o 3, calculi el cost mínim d’anar del vèrtex 0 a la resta de vèrtexs.

Qui resolgui aquest problema amb l’algorisme de Dijkstra obtindrà com a molt un 7, perquè hi ha una manera asimptòticament millor.

Entrada

L’entrada consisteix en diversos casos. Cada cas comença amb el nombre de vèrtexs nn i el nombre d’arcs mm. Segueixen mm triplets uu vv cc indicant un arc uvu \to v de cost cc, amb uvu \ne v i 1c31 \le c \le 3. Assumiu 1n1041 \le n \le 10^4, 0m5n0 \le m \le 5n, i que entre tot parell de vèrtexs uu i vv hi ha com a molt un arc uvu \to v. Els vèrtexs es numeren entre 0 i n1n-1.

Sortida

Per a cada cas, i per a cada vèrtex vv, escriviu el cost mínim d’anar de 0 fins a vv. Si és impossible, escriviu “no”. Escriviu una línia amb 10 guions al final de cada cas.

Public test cases
  • Input

    8 9
    0 6 1
    0 7 2
    0 4 3
    6 0 2
    6 1 1
    5 6 2
    1 2 1
    7 2 2
    4 2 3
    
    3 3
    0 2 1
    0 1 3
    2 1 1
    

    Output

    0 : 0
    1 : 2
    2 : 3
    3 : no
    4 : 3
    5 : no
    6 : 1
    7 : 2
    ----------
    0 : 0
    1 : 2
    2 : 1
    ----------
    
  • Information
    Author
    Salvador Roura
    Language
    Catalan
    Official solutions
    C++
    User solutions
    C++