Və yenə də heç vaxt işə düşməyən kodun refaktorinqinə günlərinizi sərf etdiniz. Yetər - vaxtınızı istifadə olunmayan kodu tapan bir alət yazmağa sərf edin!
Sizin proqram təminatınız paketlərə və icra edilə bilən fayllara bölünür. Paketlər metodlar toplusudur. İcra edilə bilən fayllar isə digər metodlar arasında yalnız PROGRAM adlı bir metodu müəyyən edən paketlərdir. Bu metod müvafiq icra edilə bilən fayl işə salındıqda icra olunur. Adi paketlərdə PROGRAM adlı metod yoxdur.
Hər bir metod paket və metod adlarının birləşməsi ilə unikal şəkildə müəyyən edilir. Məsələn, SuperGame::PROGRAM identifikatorlu metod SuperGame icra edilə bilən faylının əsas metodu olacaq.
Proqram təminatında hər bir metod üçün onu birbaşa çağıran metodların siyahısı təqdim olunur. Beləliklə, heç bir metoddan çağırılmayan metodları asanlıqla müəyyən edə bilərsiniz. Lakin sizin vəzifəniz daha çətindir: istifadə olunmayan metodları tapmaq lazımdır. Bunlar, proqram təminatınızdakı hər hansı bir icra edilə bilən faylın idarəetmə axını ilə heç vaxt əldə olunmayan metodlardır.
Birinci sətir proqram təminatında metodların sayını göstərən n (1 ≤ n ≤ 400) tam ədədini ehtiva edir.
Hər bir metod iki sətirlə təsvir olunur, cəmi 2 * n sətir. Birinci sətir metodun unikal identifikatorundan və k[i] (0 ≤ k[i] ≤ n) - bu metodu birbaşa çağıran metodların sayından ibarətdir. İkinci sətir bu çağıran metodların k[i] identifikatorlarından ibarətdir və ya belə metodlar yoxdursa boşdur, yəni k[i] = 0.
Metod identifikatorları paket adından, iki nöqtədən və metod adından ibarətdir, məsələn Packagename::Methodname. Hər iki sətir, paket və metod adı 20 kiçik, böyük hərflər və ya rəqəmlərdən (a-z, A-Z, 0-9) ibarətdir.
Giriş məlumatlarında dəqiq n müxtəlif metod identifikatoru göstəriləcək.
Proqram təminatınızdakı istifadə olunmayan metodların sayını ehtiva edən bir sətir.
Nümunə 1
Nümunə 2