OItiku 60 洛谷 10分 请问各位大佬是被什么样的数据卡了啊?感激不尽
#include <bits/stdc++.h>
using namespace std;
int Jd[1003][1003],n,m,Ca[1003],Zz,Do,Bo,Zs[31]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97};
long long fzz,fmm;
struct q{
long long fz,fm;
}Sum[1003];
void dt(long long fxz,long long fxm,int bh){
if(Ca[bh]==0){
if(Sum[bh].fm==0&&Sum[bh].fz==0){
Sum[bh].fm=fxm;
Sum[bh].fz=fxz;
return;
}else{
fzz=Sum[bh].fm;
fmm=fxm;
Sum[bh].fm*=fmm;
Sum[bh].fz*=fmm;
fxz*=fzz;
Sum[bh].fz+=fxz;
for(int k=0;k<25;k++){
while(Sum[bh].fz%Zs[k]==0&&Sum[bh].fm%Zs[k]==0){
Sum[bh].fz/=Zs[k];
Sum[bh].fm/=Zs[k];
}
}
return;
}
}
for(int k=0;k<25;k++){
while(fxm%Zs[k]==0&&fxz%Zs[k]==0){
fxm/=Zs[k];
fxz/=Zs[k];
}
}
for(int i=1;i<=n;i++){
if(Jd[bh][i]==1){
dt(fxz,fxm*Ca[bh],i);
}
}
return;
}
int main()
{
// freopen("water.in","r",stdin);
// freopen("water.out","w",stdout);
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>Do;
Ca[i]=Do;
for(int j=1;j<=Do;j++){
cin>>Bo;
Jd[i][Bo]=1;
}
}
dt(1,1,1);
for(int i=1;i<=n;i++){
if(Ca[i]==0){
for(int j=2;j<=Sum[i].fz;j++){
if(Sum[i].fz%j==0&&Sum[i].fm%j==0){
Sum[i].fz/=j;
Sum[i].fm/=j;
}
}
cout<<Sum[i].fz<<" "<<Sum[i].fm<<endl;
}
}
// fclose(stdin);
// fclose(stdout);
return 0;
}