Mad Veterinarian tapmacaları, dəli bir baytarın bir və ya daha çox heyvanı bir heyvana və ya əksinə çevirə bilən bir neçə maşın icad etdiyi tapmacalardır. Bu tapmacanın məqsədi, maşınları müəyyən bir qaydada (irəli və ya geri) tətbiq edərək bir heyvan kolleksiyasını digərinə çevirmək mümkün olub-olmadığını müəyyən etməkdir. Məsələn:
Maşın A bir qarışqanı bir bəyə çevirir.
Maşın B bir bəyi bir qarışqa, bir bəy və bir puma çevirir.
Maşın C bir pumayı bir qarışqa və bir bəyə çevirir.
Bir bəy və bir pumayı 3 qarışqaya çevirə bilərikmi?
Bəli. {b,c} C → {a,2b} A tərs → {2a,b} A tərs → 3a
Bir qarışqanı 2 qarışqaya çevirə bilərikmi? YOX
Bu tapmacalar aşağıdakı xüsusiyyətlərə malikdir:
İrəli rejimdə hər bir maşın müəyyən bir növ heyvanı tapmacadakı növlərdən olan heyvanların sonlu, boş olmayan bir kolleksiyasına çevirir.
Hər bir maşın tərs işləyə bilər.
Tapmacada hər növ üçün bir maşın var və həmin maşın (irəli rejimdə) həmin növün bir heyvanını giriş kimi qəbul edir.
Mad Veterinarian tapmacalarına ən qısa həlli (əgər varsa) tapmaq üçün bir proqram yazın. Bu problem üçün biz dəqiq üç maşın, A, B, C olan Mad Veterinarian tapmacaları ilə məhdudlaşacağıq.
Girişin ilk sətri tək bir tam ədəd P (1 ≤ P ≤ 1000) ehtiva edir, bu da izləyən məlumat dəstlərinin sayıdır. Hər bir məlumat dəsti bir neçə giriş sətrindən ibarətdir. Hər bir məlumat dəsti eyni və müstəqil şəkildə işlənməlidir.
Hər bir məlumat dəstinin ilk sətri tək bir boşluqla ayrılmış iki onluq tam ədəd ehtiva edir. Birinci tam ədəd məlumat dəsti nömrəsidir. İkinci tam ədəd tapmaca suallarının sayı N-dir. Növbəti üç giriş sətri ardıcıllıqla A, B və C maşınlarının təsvirlərini ehtiva edir. Hər bir maşın təsviri sətri bir giriş heyvanı üçün a, b və c növündən olan heyvanların sayını verən üç onluq tam ədəd ehtiva edir. Növbəti N sətir Mad Veterinarian tapmacası üçün sualları verir. Hər biri tək boşluqla ayrılmış yeddi onluq rəqəm ehtiva edir: tapmaca nömrəsi, a, b və c heyvanları üçün başlanğıc heyvan sayları, ardınca a, b və c heyvanları üçün istənilən son heyvan sayları.
Hər bir giriş məlumat dəsti üçün çoxlu çıxış sətirləri var. Hər bir məlumat dəsti üçün çıxışın ilk sətri məlumat dəsti nömrəsini, bir boşluq və tapmaca suallarının sayını (N) ehtiva edir. Hər bir tapmaca sualı üçün bir çıxış sətri var ki, bu da tapmaca sualı nömrəsini, ardınca bir boşluq, əgər həll yoxdursa "NO SOLUTION" (tırnak işarələri olmadan) və ya tapmaca sualı nömrəsini, istifadə olunan ən qısa maşın addımlarının sayını, bir boşluq və [A B C a b c] hərflər ardıcıllığını ehtiva edir, böyük hərflər maşının irəli istiqamətdə tətbiqini, kiçik hərflər isə maşının tərs istiqamətdə tətbiqini göstərir.
Nümunə 1