zoukankan      html  css  js  c++  java
  • 树的遍历 | 1079 理解题意+DFS

    这题如果读懂了题意,就很好做,一波操作就结束了。不过题目有点难读,考验耐心和读题的细致。

    AC代码:

    #include <stdio.h>
    #include <memory.h>
    #include <math.h>
    #include <string>
    #include <vector>
    #include <set>
    #include <stack>
    #include <queue>
    #include <algorithm>
    #include <map>
    
    #define I scanf
    #define OL puts
    #define O printf
    #define F(a,b,c) for(a=b;a<c;a++)
    #define FF(a,b) for(a=0;a<b;a++)
    #define FG(a,b) for(a=b-1;a>=0;a--)
    #define LEN 100010
    #define MAX (1<<30)-1
    #define V vector<int>
    
    using namespace std;
    
    typedef struct Node{
        int id,cnt=0;
    //    bool isR=0;        //isRetail
        vector<int> l;    //leaves
    }Node;
    
    Node nd[LEN];
    double ans=0;
    double p,r;
    double rate;
    
    void dfs(int s,int d){
        if(nd[s].cnt){
            ans+=pow(rate,d)*p*nd[s].cnt;
            return;
        }
        int i;
        FF(i,nd[s].l.size()){
            dfs(nd[s].l[i],d+1);
        }
    }
    
    int main(){
    //    freopen("1079.txt","r",stdin);
        int n,k,i,t;
        I("%d%lf%lf",&n,&p,&r);
        rate=1+r/100;
        FF(i,n){
            I("%d",&k);
            if(k) while(k--){
                I("%d",&t);
                nd[i].l.push_back(t);
            }else{
                I("%d",&t);
                nd[i].cnt=t;
    //            nd[i].isR=1;
            }
        }
        dfs(0,0);
        O("%.1f",ans);
        return 0;
    }
  • 相关阅读:
    暑假日报-11
    暑假日报-10
    暑假日报-9
    暑假日报-8
    暑假日报-7
    暑假日报-6
    暑假日报-5
    暑假日报-4
    暑假日报-3
    第二次集训的每日感想
  • 原文地址:https://www.cnblogs.com/TQCAI/p/8551352.html
Copyright © 2011-2022 走看看