#include <cassert> #include<iostream> #include <vector> using namespace std; vector<vector<int>> polaczenia; vector<int> stany; vector<int> rozmiary; void print_v2(vector<vector<int>> & plotno) { for (auto s: plotno) { for (auto v:s) cout << v << " "; cout << "\n"; } } void jazda(int plat) { if (rozmiary[plat] > 0) { stany[plat]= (stany[plat]+1) % rozmiary[plat]; jazda(polaczenia[plat][stany[plat]]); } } bool test_stany(int platform) { for (int i=0; i<platform; i++) if (stany[i] != 0) return(false); return(true); } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int platform, l_polaczen, el, wynik; cin >> platform; for (int i=0; i<platform; i++){ polaczenia.push_back({}); cin >> l_polaczen; stany.push_back(0); rozmiary.push_back(l_polaczen); for(int pp=0; pp < l_polaczen; pp++) { cin>>el; polaczenia[i].push_back(el-1); } } wynik = 0; while (true) { wynik+= 1; jazda(0); if (test_stany(platform)) break; } cout << wynik << "\n"; }
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 58 59 | #include <cassert> #include<iostream> #include <vector> using namespace std; vector<vector<int>> polaczenia; vector<int> stany; vector<int> rozmiary; void print_v2(vector<vector<int>> & plotno) { for (auto s: plotno) { for (auto v:s) cout << v << " "; cout << "\n"; } } void jazda(int plat) { if (rozmiary[plat] > 0) { stany[plat]= (stany[plat]+1) % rozmiary[plat]; jazda(polaczenia[plat][stany[plat]]); } } bool test_stany(int platform) { for (int i=0; i<platform; i++) if (stany[i] != 0) return(false); return(true); } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int platform, l_polaczen, el, wynik; cin >> platform; for (int i=0; i<platform; i++){ polaczenia.push_back({}); cin >> l_polaczen; stany.push_back(0); rozmiary.push_back(l_polaczen); for(int pp=0; pp < l_polaczen; pp++) { cin>>el; polaczenia[i].push_back(el-1); } } wynik = 0; while (true) { wynik+= 1; jazda(0); if (test_stany(platform)) break; } cout << wynik << "\n"; } |