题目:https://www.patest.cn/contests/gplt/L2-020
写成这样也过了。。。
就是没用double wa了半天
#include <bits/stdc++.h>
#define ll long long int
using namespace std;
const int maxn=100005;
vector<int > v[maxn];
double a[maxn]; //数据那么大,用double啊
bool flg[maxn],flg0[maxn];
int main(){
int n;
double z,r,ans=0.0;
cin>>n>>z>>r;
r*=0.01;
a[0]=z;
for(int i=0;i<n;i++){
int k,id;
cin>>k;
if(!a[i]){
flg[i]=1;
if(!k){
flg0[i]=1;
k=1;
}
for(int j=0;j<k;j++){
cin>>id;
v[i].push_back(id);
}
continue;
}
if(!k){
int mul;
cin>>mul;
a[i]*=mul;
ans+=a[i];
continue;
}
for(int j=0;j<k;j++){
cin>>id;
a[id]=a[i]-a[i]*r;
}
}
for(int i=0;i<n;i++)
if(flg[i]){
for(int j=0;j<v[i].size();j++)
a[v[i][j]]=a[i]-a[i]*r;
}
for(int i=0;i<n;i++){
if(flg[i]&&flg0[i]){
a[i]*=v[i][0];
ans+=a[i];
}
}
printf("%.0lf\n",ans-0.5);
return 0;
}