Spektr#6622

Spektr

1 saniyə
64 meqabayt
Çox çətin

Swamp County Consulting müəmmalı bir hökumət agentliyindən "hədəflər" adlandırdıqları obyektlər arasındakı əlaqələri araşdırmaq üçün verilənlər bazası qurmaq üçün bir müqavilə əldə edib. Sizin komandanız, bu hədəf məlumatlarını saxlayan və aşağıda sadalanan əmrləri işləyən bir sistem həyata keçirmək üçün subpodratçı olaraq işə götürülüb.

Bir hədəf boşluq olmayan, maksimum 32 simvoldan ibarət bir sətirlə təmsil olunur. Bir əlaqə iki hədəf arasında ikitərəfli bir münasibətdir. Verilmiş bir hədəf (adlandırılan "hədəf1") və digər hədəflər arasındakı hop sayı aşağıdakı qaydalarla müəyyən edilir:

  1. Hədəf1-ə birbaşa bağlı olan hədəflər 0 hop məsafəsindədir.

  2. 0 hop hədəflərinə birbaşa bağlı olan və artıq 0 hop hədəfi və ya orijinal hədəf kimi sayılmayan hədəflər 1 hop hədəfləridir.

  3. Eyni şəkildə, n hop hədəflərinə birbaşa bağlı olan və artıq 0..n hop hədəfləri arasında sayılmayan hədəflər n+1 hop hədəfləridir.

Maksimum 100000 hədəf və maksimum 500000 əlaqə olacaq.

Əmrlər

Verilənlər bazası sistemində yalnız üç əmr var: əlavə et, əlaqəli, və əlaqələr. Hədəflər və əlaqələr heç vaxt silinmir, çünki Agentlik heç vaxt unutmur və ya səhv etmir. Əmrlər bir sətirin ilk sütununda başlayır. Əmrlər və onların parametrləri boşluqla ayrılır. Heç bir giriş sətri 80 sütunu keçməyəcək. Çıxış sətirində heç bir ön və ya son boşluq olmamalıdır.

əlavə et bir və ya iki parametr qəbul edir:

əlavə et hədəf1 //tək parametr

Funksiya: Hədəfi verilənlər bazasına əlavə edir, heç bir əlaqə olmadan.

Qeyd: Əgər hədəf artıq verilənlər bazasında varsa, heç nə etməyin (səhv deyil).

əlavə et hədəf1 hədəf2 //iki parametr

Funksiya: Hədəflər arasında ikitərəfli əlaqə yaradır.

əlaqələr hədəf1

Funksiya: Bir hədəfdən birbaşa və dolayı əlaqələrə qədər hop sayını qaytarır.

əlaqəli hədəf1 hədəf2

Funksiya: İki hədəf arasında əlaqənin mövcudluğu haqqında məlumat qaytarır.

Giriş

Giriş faylında bir neçə test halına imkan vermək üçün, verilənlər bazası əmrləri arasında "reset" əmri əlavə edirik ki, bu da verilənlər bazası əmri deyil və giriş faylındakı müxtəlif hallar üçün verilənlər bazası əmrləri arasında baş verir. Bu əmri oxuduğunuzda bütün məlumat strukturlarınızı sıfırladığınızdan əmin olun. Faylın sonuna qədər işləyin; məlumatların sonu bayrağı və ya faylın sonunda "reset" əmri yoxdur.

Çıxış

Hər bir halı "Hal", bir boşluq, hal nömrəsi və iki nöqtədən ibarət bir sətirlə başlayın. Hər bir halı on tire ilə bitirin.

Nümunələr

Nümunə 1

Loading
Loading