求叶子结点处能活得最低价格以及能提供最低价格的叶子结点的个数
#include<bits/stdc++.h> using namespace std; const int N=1e5+10; vector<int>vec[N]; int minn=0x3f3f3f3f; int num=1; void dfs(int v,int step) { if(vec[v].size()==0){ if(minn>step){ minn=step; num=1; } else if(minn==step){ num++; } } for(int i=0;i<vec[v].size();i++){ dfs(vec[v][i],step+1); } } int main() { int n; double price,rate; scanf("%d %lf %lf",&n,&price,&rate); for(int i=0;i<n;i++){ int k; scanf("%d",&k); if(k!=0){ for(int j=0;j<k;j++){ int x; scanf("%d",&x); vec[i].push_back(x); } } } dfs(0,0); printf("%.4f %d ",price*1.0*pow(1+rate/100.0,minn),num); return 0; }