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
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void solve()
{
    int s=0,n=0,ans=0,spr=0,mx=0; vector<vector<int>> A,D; vector<vector<bool>> B; A.push_back({}); vector<int> T; A.push_back({}); B.push_back({}); D.push_back({});
    cin>>n>>s; for(int i=0; i<s; ++i){A[0].push_back(0); D[0].push_back(0); B[0].push_back(0);}
    for(int i=1; i<n; ++i)
    {
        int m=0; cin>>m; A.push_back({}); D.push_back({}); B.push_back({}); mx=max(mx,m);
        for(int j=0; j<m; ++j){int KWA; cin>>KWA; A[i].push_back(KWA); D[i].push_back(0); B[i].push_back(0);}
    }
    for(int i=0; i<n; ++i)
    {
        for(int j=0; j<A[i].size(); ++j)
        {
            if(A[i][j]==0) continue;
            else D[i][j]=D[i-1][A[i][j]-1]+1;
        }
    }
    T.assign(mx+12,0);
    for(int i=n-1; i>=0; --i)
    {
        for(int j=0; j<(int)A[i].size(); ++j)
        {
            if(B[i][j]==0){++T[i-D[i][j]]; --T[i+1];}
            if(A[i][j]!=0) B[i-1][A[i][j]-1]=1;
        }
    }
    for(int i=0; i<mx; ++i)
    {
        spr+=T[i];
        ans=max(ans,spr);
    }
    cout<<ans;
}
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int MAKUMBA=1;
    //cin>>MAKUMBA;
    for(int KOKOJAMBO=0; KOKOJAMBO<MAKUMBA; ++KOKOJAMBO){solve();}
    return 0;
}