Bu tapşırıqda sizə Kliklər problemi üçün bir həll verilir.
Bu həll Accepted statusunu əldə etmir, lakin işləmə vaxtı \mathbf{O}(2^N)-dir.
"'cpp // i - hazırkı zirvə, p - hazırkı zirvələr çoxluğu long long go(int i, long long p) if (p == 0) // əgər p çoxluğu boşdursa return 1; counter++; // proqramın işləmə müddəti while (((p » i) 1) == 0) // zirvə i p çoxluğundadırmı i++; p ^= 1LL « i; // i zirvəsini p çoxluğundan çıxarırıq if ((p c[i]) == p) // c[i] - i zirvəsi ilə kənar vasitəsilə birləşən zirvələr çoxluğu return 2 * go(i, p); // p c[i] - p və c[i] çoxluqlarının kəsişməsi return go(i, p) + go(i, p c[i]); counter = 0; // proqramın işləmə vaxtını sıfırla result = go(0, (1LL « n) - 1); // bütün zirvələr çoxluğundan başla "'
Sizin vəzifəniz bu həllin Time Limit daxilində yekunlaşmayacağı bir test yaratmaqdır. Proqramın icra vaxtı counter dəyişəni ilə müəyyən olunur.
ədədi — qurmağınız gərəkən qrafın zirvələrinin sayı.
Bu tapşırıqda cəmi test var.
Birinci testdə N = 20-dir. Bu testdə proqramın sonunda counter dəyişəninin dəyəri azı olmalıdır.
İkinci testdə N = 40-dır. Bu testdə proqramın sonunda counter dəyişəninin dəyəri azı olmalıdır.
Testi çap edin. Test Kliklər probleminin giriş formatına uyğun olmalıdır.
Nümunə 1