<a target=_blank href="https://pta.patest.cn/pta/test/15/exam/4/question/861">点击打开链接</a>
#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <string.h>
#define N 1100
using namespace std;
int mapp[N][N],r[N],c[N];
int main()
{
int n,m,p,i,j,k,l=0,flag=0;
cin>>n;
memset(mapp,0,sizeof(mapp));
memset(r,0,sizeof(r));
for(i=1;i<=n;i++){
cin>>m;
for(j=1;j<=m;j++){///注意花括号,之前一直喜欢简省,这下就被坑了
cin>>p;
mapp[p][i]=1;
}
r[i]=m; //
}
///拓扑排序的地方
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(r[j]==0){ ///若发现入度为0的点
r[j]--;
c[l++]=j;
for(k=1;k<=n;k++)
if(mapp[j][k])
r[k]--;
break;
}
sort(c,c+l);
for(i=1;i<=n;i++)
if(c[i-1]!=i){
flag=1;
break;
}
if(flag==1)
cout<<"0"<<endl;
else
cout<<"1"<<endl;
return 0;
}