社区讨论
杏干代码求条(为贵紫山)
学术版参与者 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&
,求调
回复
共 5 条回复,欢迎继续交流。
正在加载回复...