怎么就全WA了???(T1)
  • 板块灌水区
  • 楼主ygl666666
  • 当前回复7
  • 已保存回复7
  • 发布时间2020/12/5 20:15
  • 上次更新2023/11/5 06:35:58
查看原帖
怎么就全WA了???(T1)
197603
ygl666666楼主2020/12/5 20:15

RT,信奥题库好好的。

#include<bits/stdc++.h>
using namespace std;
unsigned long long n,m,ta[100001],tb[100001],a[100001],k[100001];
unsigned long long gcd(unsigned long long x,unsigned long long y){
	unsigned long long minn=min(x,y),gys=1;
	for(unsigned long long i=minn;i>=2;i--){
		if(y%i==0&&x%i==0){
			gys=i;
			break;
		}
	}
	return gys;
}
int main(){
//	freopen("water.in","r",stdin);
//	freopen("water.out","w",stdout);
	ios::sync_with_stdio(false);
	cin>>n>>m;
	for(unsigned long long i=1;i<=m;i++){
		ta[i]=1,tb[i]=1;	
	}
	for(unsigned long long i=1;i<=n;i++){
		cin>>a[i];
		if(a[i]==0){
			k[i]=1;
			continue;
		}
		for(unsigned long long j=1;j<=a[i];j++){
			unsigned long long b;
			cin>>b;
			if(ta[b]!=0&&tb[i]!=0){
				unsigned long long x=ta[b],y=tb[b],xx=ta[i],yy=a[i]*tb[i];
				unsigned long long gbs=y*yy/gcd(y,yy);
				x=gbs/yy*xx+gbs/y*x;
				y=gbs;
				long long z=x;
				x/=gcd(x,y);
				y/=gcd(z,y);
				ta[b]=x,tb[b]=y;
			}else{
				ta[b]=ta[i],tb[b]=a[i]*tb[i];
				long long z=ta[b];
				ta[b]/=gcd(ta[b],tb[b]);
				tb[b]/=gcd(z,tb[b]);
			}
		}
	}
	
	for(unsigned long long i=1;i<=n;i++){
		if(k[i]){
			unsigned long long z=ta[i];
			ta[i]/=gcd(ta[i],tb[i]);
			tb[i]/=gcd(z,tb[i]);
			cout<<ta[i]<<" "<<tb[i]<<endl;
		}
	}
	return 0;
}

2020/12/5 20:15
加载中...