悬赏关注!!!--一位真实小学生的求助
查看原帖
悬赏关注!!!--一位真实小学生的求助
406124
Yzj2010小号楼主2022/5/30 20:48

奇奇怪怪的问题又增加了......

竟无法输出??(虽然肯定T了)

#include<bits/stdc++.h>
using namespace std;
#define N 100001
int a[N][6],s[N],fm[N],fz[N],as[N],len=0,n,m;
inline int read()
{
	int x=0;
	char c=getchar();
	while(c<'0'||c>'9') c=getchar();
	while(c>='0'&&c<='9') 
	{
		x=(x<<1)+(x<<3)+(c^48);
		c=getchar();
	}
	return x;
}
void jia(int x,int y)
{
	int gcd=fm[x]*fm[a[x][y]]/__gcd(fm[x],fm[a[x][y]]);
	fm[a[x][y]]=gcd;
	fz[a[x][y]]=fz[a[x][y]]*gcd/fm[a[x][y]]+fz[x]*gcd/fm[x]/y;
    return;
}
void ans(int i)
{
	fm[i]/=s[i];
	for(int j=1;j<=s[i];j++) 
	{
	    jia(i,j);
	    if(s[i]>0) ans(j);
	}
}
signed main()
{
	n=read();
	m=read();
	for(int i=1;i<=n;i++)
	{
		s[i]=read();
		for(int j=1;j<=n;j++)
		    a[i][j]=read();
        fm[i]=1;
		if(s[i]==0) as[++len]=i,fm[i]=1;
	}
	for(int i=1;i<=m;i++) 
	    if(s[i]!=0) ans(i);
	for(int i=1;i<=len;i++) printf("%d %d\n",fz[i],fm[i]);
	return 0;
}
2022/5/30 20:48
加载中...