#include #include #include using namespace std;int n,head[2005],dp[2005][2],fa[2005],root,cnt;struct edge{ int v,next;}e[2005];inline void add(int u,int v){ e[++cnt].v=v; e[cnt].next=head[u]; head[u]=cnt;}inline void dfs(int u,int fa){ dp[u][1]=1;dp[u][0]=0; for(int i=head[u];i!=-1;i=e[i].next){ int v=e[i].v; if(v==fa)continue; dfs(v,u); dp[u][0]+=dp[v][1]; dp[u][1]+=min(dp[v][0],dp[v][1]); }}int main(){ memset(head,-1,sizeof(head)); scanf("%d",&n); for(int i=1;i<=n;i++){ int u,son,x; scanf("%d%d",&u,&son); while(son--){ scanf("%d",&x); add(u,x); } } dfs(0,-1); printf("%d\n",min(dp[0][0],dp[0][1]));}