Volver a contenidos
Titulo
Dado un árbol para la venta y el suministro, las raíces son únicas. El precio raíz del árbol es p, y luego, a partir del nodo raíz, el precio sube un r% para cada capa inferior. Encuentre el precio más bajo y el número de nodos hoja con el precio más bajo entre todos los nodos hoja.
Muestra (se puede copiar)
10 1.80 1.00
3 2 3 5
1 9
1 4
1 7
0
2 6 1
1 8
0
0
0
//output
1.8362 2
Puntos a tener en cuenta
- Esta pregunta es muy similar a A1090 , la pregunta es por el precio más alto, la pregunta es por el precio más bajo
- La profundidad del nodo raíz es 0
#include<bits/stdc++.h>
using namespace std;
int n,m,tmp,mindepth=100010,num=0;
double p,r;
vector<int> node[100010];
void DFS(int root,int depth){
if(node[root].size()==0){
if(depth==mindepth)num++;
if(depth<mindepth){
mindepth=depth;
num=1;
}
}
for(int i=0;i<node[root].size();i++){
DFS(node[root][i],depth+1);
}
}
int main(){
cin>>n>>p>>r;
r/=100;
for(int i=0;i<n;i++){
scanf("%d",&m);
while(m--){
scanf("%d",&tmp);
node[i].push_back(tmp);
}
}
DFS(0,0);
printf("%.4f %d",p*pow(1+r,mindepth),num);
return 0;
}