zoukankan      html  css  js  c++  java
  • [patl2-020]功夫传人

    解题关键:dfs的简单应用,需要注意类型double与int

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<cstdlib>
    #include<iostream>
    #include<cmath>
    #define maxn 100002
    using namespace std;
    typedef long long ll;
    int n;
    double z,r;
    int vis[maxn];
    int cnt=0,head[maxn];
    struct edge{
        int to,nxt;
    }e[maxn];
    void add_edge(int u,int v){
        e[cnt].to=v;
        e[cnt].nxt=head[u];
        head[u]=cnt++;
    }
    
    double dfs(int u,double val){
        if(vis[u]){
            val*=vis[u];
            return val;
        }
        double res=0;
        val*=r;
        for(int i=head[u];i!=-1;i=e[i].nxt){
            int v=e[i].to;
            res+=dfs(v,val);
        }
        return res;
    }
    
    int main(){
        memset(head, -1, sizeof head);
        cin>>n>>z>>r;
        r=1-0.01*r;
        for(int i=0;i<n;i++){
            int tmp,t2;
            cin>>tmp;
            if(tmp==0){
                cin>>t2;
                vis[i]=t2;
            }else{
                for(int j=0;j<tmp;j++){
                    int t;
                    cin>>t;
                    add_edge(i,t);
                }
            }
        }
        printf("%d
    ",(int)dfs(0,z));
        return 0;
    }
  • 相关阅读:
    导出预设体的缩略图工具
    FairyGui自动生成Wnd工具(Unity)
    Unity骨骼优化(转)
    顶点处理机制
    面向对象
    文件读取
    协同程序
    元表
    模块与包
    Lua表
  • 原文地址:https://www.cnblogs.com/elpsycongroo/p/8531525.html
Copyright © 2011-2022 走看看