// 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; } |
English