Sistemes d'equacions simbòliques P92039


Statement
 

pdf   zip

Un sistema d’equacions simbòliques és un conjunt d’equacions x=f(y1,,yk)x = f(y_1, \ldots, y_k), on xx, y1y_1, …, yky_k són variables i ff és un símbol que representa a una funció arbitrària de kk arguments (direm que ffaritat kk). Una solució d’un sistema amb nn variables x1,,xnx_1, \ldots, x_n és qualsevol assignació α\alpha d’expressions a variables de manera que per tota equació x=f(y1,,yk)x = f(y_1, \ldots, y_k), es compleix α(x)=f(α(y1),,α(yk))\alpha(x) = f(\alpha(y_1), \ldots, \alpha(y_k)).

Feu un programa que, donat un sistema d’equacions simbòliques, en calculi la solució més general, o digui si no en té.

Entrada

L’entrada consisteix en diversos casos, cadascun amb nn, seguida de les nn variables en ordre lexicogràfic, seguides del nombre d’equacions mm, seguida de mm equacions en el format dels exemples. Les variables i les funcions són paraules amb lletres minúscules, totes diferents. Cada variable apareix com a molt un cop a la banda esquerra d’una equació. Cada funció pot aparèixer diversos cops, però sempre amb la mateixa aritat, entre 1 i nn. Tots els arguments de la mateixa funció són variables diferents. Podeu suposar 1n401 \le n \le 40.

Sortida

Escriviu, en ordre lexicogràfic de les variables, la solució més general del sistema, seguint el format dels exemples. Escriviu una línia buida al final de cada cas.

Pista

Inspireu-vos en l’ordenació topològica.

Public test cases
  • Input

    3
    x y z
    2
    z = f ( x y )
    y = h ( x )
    
    1
    x
    1
    x = f ( x )
    
    2
    xx yy
    2
    xx = ff ( yy )
    yy = ff ( xx )
    
    2
    abc z
    0
    
    6
    uu uv w x y z
    4
    x = f ( uv )
    y = gg ( x z )
    w = gg ( uv y )
    uu = gh ( uv )
    

    Output

    x -> x
    y -> h ( x )
    z -> f ( x h ( x ) )
    
    No solution!
    
    No solution!
    
    abc -> abc
    z -> z
    
    uu -> gh ( uv )
    uv -> uv
    w -> gg ( uv gg ( f ( uv ) z ) )
    x -> f ( uv )
    y -> gg ( f ( uv ) z )
    z -> z
    
    
  • Information
    Author
    Enric Rodríguez
    Language
    Catalan
    Other languages
    English
    Official solutions
    C++
    User solutions
    C++