#include <iostream>
using namespace std;
bool cycle(int array[], int start, int size) {
int numbers[1001], numbersCounter = 0;
int position = start;
while (numbersCounter != size + 1) {
for (int i = 0; i < numbersCounter; i++)
if (position == numbers[i])
return true;
numbers[numbersCounter] = position;
position = array[position];
numbersCounter++;
}
return false;
}
int main() {
int test1[1000] = { 6,2,1,0 };
cout << cycle(test1, 1, 4) << '\n';
int test2[1000] = { 1,2,3,0 };
cout << cycle(test2, 1, 4) << '\n';
int test3[1000] = { 6,2,3,0 };
cout << cycle(test3, 1, 4) << '\n';
int test4[1000] = { 5,4,3,1,0,6,100 };
cout << cycle(test4, 2, 7) << '\n';
int test5[1000] = { 5,3,1,4,2,6,100 };
cout << cycle(test5, 2, 7) << '\n';
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKYm9vbCBjeWNsZShpbnQgYXJyYXlbXSwgaW50IHN0YXJ0LCBpbnQgc2l6ZSkgewoJaW50IG51bWJlcnNbMTAwMV0sIG51bWJlcnNDb3VudGVyID0gMDsKCWludCBwb3NpdGlvbiA9IHN0YXJ0OwoJd2hpbGUgKG51bWJlcnNDb3VudGVyICE9IHNpemUgKyAxKSB7CgkJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1iZXJzQ291bnRlcjsgaSsrKQoJCQlpZiAocG9zaXRpb24gPT0gbnVtYmVyc1tpXSkKCQkJCXJldHVybiB0cnVlOwoJCW51bWJlcnNbbnVtYmVyc0NvdW50ZXJdID0gcG9zaXRpb247CgkJcG9zaXRpb24gPSBhcnJheVtwb3NpdGlvbl07CgkJbnVtYmVyc0NvdW50ZXIrKzsKCX0KCXJldHVybiBmYWxzZTsKfQoKaW50IG1haW4oKSB7CglpbnQgdGVzdDFbMTAwMF0gPSB7IDYsMiwxLDAgfTsKCWNvdXQgPDwgY3ljbGUodGVzdDEsIDEsIDQpIDw8ICdcbic7IAoKCWludCB0ZXN0MlsxMDAwXSA9IHsgMSwyLDMsMCB9OyAKCWNvdXQgPDwgY3ljbGUodGVzdDIsIDEsIDQpIDw8ICdcbic7CgoJaW50IHRlc3QzWzEwMDBdID0geyA2LDIsMywwIH07Cgljb3V0IDw8IGN5Y2xlKHRlc3QzLCAxLCA0KSA8PCAnXG4nOwoKCWludCB0ZXN0NFsxMDAwXSA9IHsgNSw0LDMsMSwwLDYsMTAwIH07Cgljb3V0IDw8IGN5Y2xlKHRlc3Q0LCAyLCA3KSA8PCAnXG4nOwoKCWludCB0ZXN0NVsxMDAwXSA9IHsgNSwzLDEsNCwyLDYsMTAwIH07Cgljb3V0IDw8IGN5Y2xlKHRlc3Q1LCAyLCA3KSA8PCAnXG4nOwp9