玄关求调
#include<bits/stdc++.h>
using namespace std;
const int N=5000;
int n;
int head[N],to[N],nxt[N];
int dp[N][N];
void dfs(int x,int y){
dp[x][1]=1;
dp[x][0]=0;
for(int i=head[x];i;i=nxt[i]){
if(to[i]==y) continue;
dfs(to[i],x);
dp[x][0]+=dp[to[i]][1];
dp[x][1]+=min(dp[to[i]][1],dp[to[i]][0]);
}
}
int main(){
cin>>n;
int sum=0;
for(int i=1;i<=n;i++){
int a,k;
cin>>a>>k;
for(int j=1;j<=k;j++){
int b;
cin>>b;
to[++sum]=b;
nxt[sum]=head[a];
head[a]=sum;
}
}
dfs(0,-1);
cout<<min(dp[0][0],dp[0][1]);
return 0;
}