/*
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 */ |
English