1079 Total Sales of Supply Chain (25分)


1079 Total Sales of Supply Chain (25分)

思路

就一个树形图,跑$dfs$或$bfs$,记录深度,遇到叶子结点计算贡献即可。

代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;
#define mst(a,b) memset(a,b,sizeof a)
#define PII pair<int,int>
#define fi first
#define se second
#define pb push_back
int n;double p,r,ans;
int val[N];
double dep[N];
vector<int>e[N];
int main(){
    scanf("%d%lf%lf",&n,&p,&r);
    for(int i=0;i<n;i++){
        int k;scanf("%d",&k);
        if(!k){
            int v;scanf("%d",&val[i]);
        }
        for(int j=0,x;j<k;j++){
            scanf("%d",&x);
            e[i].pb(x);
        }
    }queue<int>q;
    q.push(0);
    dep[0]=1;
    while(!q.empty()){
        int u=q.front();q.pop();
        if(e[u].empty()){
            ans+=val[u]*p*dep[u];
        }
        for(int v:e[u]){
            dep[v]=dep[u]*(1+0.01*r),q.push(v); 
        }
    }
    printf("%.1f\n",ans);
    return 0;
}

文章作者: Harris-H
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Harris-H !
评论
  目录