// Wojciech Widomski #include <iostream> #include <vector> using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(NULL); int n; // liczba platform cin >> n; vector<vector<int>> platformy(n); int* aktywny_tasmociag = new int[n](); int niezerowe_tasmociagi = 0; for (int i = 0; i < n; i++) { int tasmy; // liczba taśmociągów cin >> tasmy; for (int j = 0; j < tasmy; j++) { int l; cin >> l; platformy[i].push_back(l-1); } } bool zresetowane = false; int powt = 0; while (!zresetowane) { int v = 0; while (platformy[v].size() > 0) { int tas = aktywny_tasmociag[v]; aktywny_tasmociag[v] = (aktywny_tasmociag[v]+1)%platformy[v].size(); if (tas == 0 && aktywny_tasmociag[v] != 0) { niezerowe_tasmociagi++; } else if (tas != 0 && aktywny_tasmociag[v] == 0) { niezerowe_tasmociagi--; } v = platformy[v][tas]; } // zresetowane = true; // for (int i = 0; i < n; i++){ // if (aktywny_tasmociag[i] != 0) { // zresetowane = false; // } // } zresetowane = niezerowe_tasmociagi == 0; powt++; } cout << powt << "\n"; return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | // Wojciech Widomski #include <iostream> #include <vector> using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(NULL); int n; // liczba platform cin >> n; vector<vector<int>> platformy(n); int* aktywny_tasmociag = new int[n](); int niezerowe_tasmociagi = 0; for (int i = 0; i < n; i++) { int tasmy; // liczba taśmociągów cin >> tasmy; for (int j = 0; j < tasmy; j++) { int l; cin >> l; platformy[i].push_back(l-1); } } bool zresetowane = false; int powt = 0; while (!zresetowane) { int v = 0; while (platformy[v].size() > 0) { int tas = aktywny_tasmociag[v]; aktywny_tasmociag[v] = (aktywny_tasmociag[v]+1)%platformy[v].size(); if (tas == 0 && aktywny_tasmociag[v] != 0) { niezerowe_tasmociagi++; } else if (tas != 0 && aktywny_tasmociag[v] == 0) { niezerowe_tasmociagi--; } v = platformy[v][tas]; } // zresetowane = true; // for (int i = 0; i < n; i++){ // if (aktywny_tasmociag[i] != 0) { // zresetowane = false; // } // } zresetowane = niezerowe_tasmociagi == 0; powt++; } cout << powt << "\n"; return 0; } |