社区讨论

杏干代码求条(为贵紫山)

学术版参与者 3已保存回复 5

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
5 条
当前快照
1 份
快照标识符
@lzzhbihm
此快照首次捕获于
2024/08/18 19:23
2 年前
此快照最后确认于
2024/08/18 21:42
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
#define int __int128
using namespace std;
const int N=1e5+10;
int cnt[N];
inline unsigned int read(){
    unsigned int x=0,f=1;
    char ch=getchar();
    while(ch<'0'||ch>'9'){
        if(ch=='-')
            f=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9'){
        x=x*10+ch-'0';
        ch=getchar();
    }
    return x*f;
}
inline void print(unsigned int x){
    if(x<0){
        putchar('-');
        x=-x;
    }
    if(x>9)
        print(x/10);
    putchar(x%10+'0');
}
struct re
{
	int fz,fm;
}a[N];
void add(int i,int fz,int fm)
{
	int fm1,fz1,fz2,fz3;
	fm1=fm*a[i].fm;
	fz1=fm*a[i].fz;
	fz2=a[i].fm*fz;
	fz3=fz1+fz2;
	while(__gcd(fz3,fm1)!=1)
	{
		int cs=__gcd(fz3,fm1);
		fz3/=cs;
		fm1/=cs;
	}
	a[i].fz=fz3;
	a[i].fm=fm1;
}
void cf(int i,int fz,int fm)
{
	int fm1,fz1;
	fm1=fm*a[i].fm;
	fz1=fz*a[i].fz;
	while(__gcd(fz1,fm1)!=1)
	{
		int cs=__gcd(fz1,fm1);
		fz1/=cs;
		fm1/=cs;
	}
	a[i].fz=fz1;
	a[i].fm=fm1;
}
int n,m;
int ans[N];
vector<int> v[N];
signed main()
{
	n=read();
	m=read();
	for(int i=1;i<=n;i++)
	{
		int l;l=read();
		cnt[i]=l;
		for(int j=1;j<=l;j++)
		{
			int x;x=read();
			v[i].push_back(x);
		}
	}
	for(int i=1;i<=n;i++)
	{
//		cout<<v[i].size()<<" ";
		if(!cnt[i]) continue;
		int fz,fm;
		if(i<=m)
		{
			a[i].fm=1;
			a[i].fz=1;
			fz=1;
			fm=v[i].size();
		}
		else
		{
//			cout<<i<<" "<<a[i].fz<<" "<<a[i].fm<<" ";
//			cout<<i<<" "<<v[i].size()<<" ";
			cf(i,1,v[i].size());
			fz=a[i].fz;
			fm=a[i].fm;
//			cout<<fz<<" "<<fm<<"\n";
		}
		for(int j=0;j<v[i].size();j++)
		{
			if(a[v[i][j]].fm==0&&a[v[i][j]].fz==0)
			{
				a[v[i][j]].fm=fm;
				a[v[i][j]].fz=fz;
			}
			else
			{
				add(v[i][j],fz,fm);
			}
		}
//		cout<<i<<" "<<fz<<" "<<fm<<"\n";
		if(cnt[i])
		{
			a[i].fm=0;
			a[i].fz=0;
		}
	}
	for(int i=1;i<=n;i++)
	{
		if(!cnt[i])
		{
			print(a[i].fz);
			cout<<" ";
			print(a[i].fm);
			cout<<"\n";
		}
	}
}
80pts Wa#9&&#10,求调

回复

5 条回复,欢迎继续交流。

正在加载回复...