/* Jakub Żojdzik 18-12-2022 */ #include <bits/stdc++.h> #ifdef LOCAL #include "debug.hpp" #else #define debug(...) #define dt #endif using namespace std; typedef long long ll; typedef unsigned long long ull; typedef double db; typedef pair<int, int> pii; typedef pair<long long, long long> pll; typedef vector<int> vi; typedef vector<long long> vll; typedef vector<pair<int, int>> vpii; typedef vector<pair<long long, long long>> vpll; #define fi first #define se second #define pb push_back #define rep(i, x, y) for(ll i = (ll)x; i <= (ll)y; i++) #define all(x) x.begin(), x.end() #define sz(x) (ll)(x).size() #define nl cout << '\n' vi na[107]; int poz[107]; int main() { // cout.tie(0); // cin.tie(0)->sync_with_stdio(0); int n, l; cin >> n; rep(i, 1, n) { int r; cin >> r; rep(j, 1, r) { cin >> l; na[i].pb(l); poz[i] = 0; } } bool ok = 0; int akt, res = 0; while(!ok) { akt = 1; ok = 1; while(!na[akt].empty()) { int tmp = akt; akt = na[akt][poz[akt]]; poz[tmp] = (poz[tmp] + 1) % sz(na[tmp]); } for(int i = 1; i <= n; i++) { ok = (ok && (poz[i] == 0)); } res++; } cout << res << '\n'; } /* 7 3 2 3 5 2 3 6 3 5 6 7 1 6 1 7 0 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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | /* Jakub Żojdzik 18-12-2022 */ #include <bits/stdc++.h> #ifdef LOCAL #include "debug.hpp" #else #define debug(...) #define dt #endif using namespace std; typedef long long ll; typedef unsigned long long ull; typedef double db; typedef pair<int, int> pii; typedef pair<long long, long long> pll; typedef vector<int> vi; typedef vector<long long> vll; typedef vector<pair<int, int>> vpii; typedef vector<pair<long long, long long>> vpll; #define fi first #define se second #define pb push_back #define rep(i, x, y) for(ll i = (ll)x; i <= (ll)y; i++) #define all(x) x.begin(), x.end() #define sz(x) (ll)(x).size() #define nl cout << '\n' vi na[107]; int poz[107]; int main() { // cout.tie(0); // cin.tie(0)->sync_with_stdio(0); int n, l; cin >> n; rep(i, 1, n) { int r; cin >> r; rep(j, 1, r) { cin >> l; na[i].pb(l); poz[i] = 0; } } bool ok = 0; int akt, res = 0; while(!ok) { akt = 1; ok = 1; while(!na[akt].empty()) { int tmp = akt; akt = na[akt][poz[akt]]; poz[tmp] = (poz[tmp] + 1) % sz(na[tmp]); } for(int i = 1; i <= n; i++) { ok = (ok && (poz[i] == 0)); } res++; } cout << res << '\n'; } /* 7 3 2 3 5 2 3 6 3 5 6 7 1 6 1 7 0 0 */ |