1106 Lowest Price in Supply Chain (25分)(简单dfs)

在这里插入图片描述
就是个简单的dfs
最开始看错了题目,以为输出最低价格和对应的层数。。只过了两个用例,服了。

#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>
#include <cmath>
#define MAX 101000
using namespace std;
int N;
vector<int> children[MAX];
double P, r;
int mini = 0x3f3f3f3f;
int num = 0;
double quickpow(double x, int n)
{
    if(n==0)
        return 1.0;
    if(n==1)
        return x;
    if(n&1)
        return x*quickpow(x,n-1);
    else{
        double t = quickpow(x,n/2);
        return t*t;
    }
}
void dfs(int ind,int step)
{
    if(step>mini)
        return;
    if(children[ind].empty())
    {
        if(step<mini)
        {
            mini = step;
            num = 1;
        }
        else if(mini==step)
            num++;
        return;
    }
    for(int i=0;i<children[ind].size();i++)
    {
        dfs(children[ind][i],step+1);
    }
}
int main()
{
    scanf("%d",&N);
    scanf("%lf%lf",&P,&r);
    r = 1.0+0.01*r;
    for(int i=0;i<N;i++)
    {
        int k;
        scanf("%d",&k);
        for(int j=0;j<k;j++)
        {
            int child;
            scanf("%d",&child);
            children[i].push_back(child);
        }
    }
    dfs(0,0);
    printf("%.4f %d\n",P*quickpow(r,mini),num);
    return 0;
}

原创文章 39 获赞 5 访问量 4911

猜你喜欢

转载自blog.csdn.net/q1072118803/article/details/105820871