2011-06-19 15:54:09 #include<iostream> #define N 30010 using namespace std; int parent[N],root[N]; int Find(int x) { if(root[x]) return x; return (parent[x] = Find(parent[x])); } void Union(int rx,int ry) { if(rx==ry) return; root[ry]=0; parent[rx]+=parent[ry]; parent[ry] = rx; return; } int main() { int n,m,k,i,j,x,y,rx,ry; while(~scanf("%d%d",&n,&m)&&(m+n)) { for(i=0;i<n;i++) { parent[i]=root[i]=1; } if(m==0) printf("1/n"); else { while(m--) { scanf("%d",&k); if(k) { scanf("%d",&x); rx = Find(x); } for(i=0;i<k-1;i++) { scanf("%d",&y); ry = Find(y); Union(rx,ry); } } rx = Find(0); printf("%d/n",parent[rx]); } } return 0; }