为什么最后一个结果不对
查看原帖
为什么最后一个结果不对
260644
傻狗凉楼主2020/12/27 19:28
#include <bits/stdc++.h>
using namespace std;
int n,m;
int jd[100005][10],d[100005];
int fz[100005],fm[100005];
void wg(int dian)
{
	fz[dian]*=d[dian];
	fm[dian]*=d[dian];
	for(int i=0;i<d[dian];++i)
	{
		if(d[jd[dian][i]]!=0)
		{
			fz[jd[dian][i]]=1;
			fm[jd[dian][i]]=fm[dian];
			wg(jd[dian][i]);
		}
		else
		{
			fz[jd[dian][i]]=fm[jd[dian][i]]+fm[dian]*fz[jd[dian][i]];
			fm[jd[dian][i]]=fm[jd[dian][i]]*fm[dian];
		}
	}
}
int zzxc(int a,int b)
{
	if(b==0) return a;
	else zzxc(b,a%b);
}
int main(){
	cin>>n>>m;
	for(int i=0;i<n;++i)
	{
		fm[i]=1;
		cin>>d[i];
		for(int j=0;j<d[i];++j)
			cin>>jd[i][j];
	}
	for(int i=0;i<m;++i)
	{
		fz[i]=1;
		fm[i]=1;
		wg(i);
	}
	for(int i=0;i<n;++i)
	{
		if(d[i]==0)
		{
			cout<<fz[i]/zzxc(fz[i],fm[i])<<' '<<fm[i]/zzxc(fz[i],fm[i])<<endl;
		}
	}
	return 0;
}

2020/12/27 19:28
加载中...