#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<vector> using namespace std; int vis_tuan[500+10]; int vis[30000+10]; int mat[30000+10][510]; int fa[30000+10]; int ans; int n,m; int find(int x) { return fa[x]==x?x:find(fa[x]); } void bin(int x,int y) //前小后大 { int fx=find(x); int fy=find(y); if(fx!=fy) { // printf("x %d fx %d y %d fy %d ",x,fx,y,fy); // printf("%d %d ",vis[fx],vis[fy]); if(fy==0) { vis[fy]+=vis[fx]; fa[fx]=fa[fy]; } else { vis[fx]+=vis[fy]; fa[fy]=fa[fx]; } } } int main() { int i,j,k; while(scanf("%d%d",&n,&m),n+m) { ans=0; int ok=0; //memset(vis_tuan,0,sizeof(vis_tuan)); memset(vis,0,sizeof(vis)); for(i=0;i<=n;i++) { vis[i]=1; fa[i]=i; } for(i=0;i<m;i++) { scanf("%d",&mat[i][0]); int tlen=mat[i][0]; for(j=1;j<=tlen;j++) { scanf("%d",&mat[i][j]); if(mat[i][j]==0) ok=1; } sort(mat[i]+1,mat[i]+tlen+1); for(j=2;j<=tlen;j++) { //printf(" %d ",mat[i][j]); bin(mat[i][1],mat[i][j]); } //printf(" "); } printf("%d ",vis[0]); /*if(ok==1) { int ret=0; for(i=0;i<n;i++) { if(find(i)==0) ret++; } printf("%d ",ret); } else printf("0 ");*/ } return 0; }