#include<stdio.h> #include<string.h> #include<stdbool.h> bool a[1001],f[1001]; int r[1001],b[1001],sk[1001]; bool e[1001][1001]; int main() { int n,m,q; scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) { memset(a,0,sizeof(a)); scanf("%d",&q); for(int j=1;j<=q;j++) { scanf("%d",&b[j]); a[b[j]]=1; } for(int j=b[1];j<=b[q];j++) if(!a[j]) for(int k=1;k<=q;k++) if(!e[j][b[k]]) { e[j][b[k]]=1; r[b[k]]++; } } int ans=0,top; while(1) { top=0; for(int i=1;i<=n;i++) if(!r[i]&&!f[i]){ sk[++top]=i; f[i]=1; } if(top==0)break; for(int k=1;k<=top;k++) { for(int i=1;i<=n;i++) if(e[sk[k]][i]) { e[sk[k]][i]=0; r[i]--; } } ans++; } printf("%d",ans); return 0; } /************************************************************** Problem: 2323 User: admin Language: C Result: Accepted Time:477 ms Memory:2136 kb ****************************************************************/