#include<iostream>
#include<cstdio>
#include<string>
#include<algorithm>
#define ull __int128
using namespace std;
ull a[100010],b[100010][6],in[11],out[100010];
ull n,m,fm[100010],fz[100010];
bool bo[100010];
inline ull gcd(ull x,ull y){
if(x%y==0)return y;
return gcd(y,x%y);
}
inline int read(){
int f=1,x=0;char ch=getchar();
while(ch>'9'||ch<'0'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+ch-'0';ch=getchar();}
return x*f;
}
void add(ull x,ull fzz,ull fmm){
if(!fz[x]&&!fm[x]){
fz[x]=fzz;
fm[x]=fmm;
return ;
}
else{
fz[x]=fz[x]*fmm+fzz*fm[x];
fm[x]*=fmm;
return ;
}
}
void dfs(ull x,ull fzz,ull fmm){
if(!a[x]){
add(x,fzz,fmm);
return ;
}
for(int i=1;i<=a[x];i++){
dfs(b[x][i],fzz,fmm*a[x]);
}
}
inline void put1(ull x){
if(x<0){putchar('-');x=-x;}
if(x>10){put1(x/10);}
putchar((char)(x%10+'0'));
return ;
}
void write(ull x,ull y){
ull mgcd=gcd(x,y);
ull xx=x/mgcd;
ull yy=y/mgcd;
put1(xx);putchar(' ');put1(yy);putchar('\n');
return ;
}
int main(){
n=read();m=read();
for(int i=1;i<=n;i++){
a[i]=read();
for(int j=1;j<=a[i];j++){
b[i][j]=read();
bo[b[i][j]]=1;
}
}
int op=1,po=1;
for(int i=1;i<=n;i++){
if(!bo[i]){
in[op++]=i;
}
if(!a[i]){
out[po++]=i;
}
}
po--;
for(int i=1;i<=m;i++){
dfs(i,1,1);
}
for(int i=1;i<=po;i++){
write(fz[out[i]],fm[out[i]]);
}
return 0;
}
```cpp
代码如上,1、2、3 AC,4、5、7、8 WA,6、9、10 RE