Es la mente humana la que libera la luz infinita, y también es la mente humana la que crea la oscuridad ilimitada. La luz y la oscuridad se entrelazan y luchan juntas. Este es el mundo por el que estamos nostálgicos y desamparados.
Una cadena de suministro es una red de minoristas (minoristas), distribuidores y proveedores (proveedores): todos los involucrados en el traslado de un producto de proveedor a cliente.
A partir de un proveedor raíz, todos en la cadena compran productos de su proveedor a un precio P y los venden o distribuyen a un precio r% más alto que P. Se supone que cada miembro de la cadena de suministro tiene exactamente un proveedor excepto el proveedor raíz, y no hay ciclo de suministro.
Ahora, dada una cadena de suministro, se supone que debe indicar el precio más alto que podemos esperar de algunos minoristas.
Especificación de entrada:
Cada archivo de entrada contiene un caso de prueba. Para cada caso, la primera línea contiene tres números positivos: N (≤10 5), el número total de miembros en la cadena de suministro (y por lo tanto están numerados de 0 a N − 1); P, el precio dado por el proveedor raíz; y r, la tasa porcentual de incremento de precio para cada distribuidor o minorista. Luego, la siguiente línea contiene N números, cada número S i es el índice del proveedor para el i-ésimo miembro. La raíz S para el proveedor raíz se define como -1. Todos los números de una línea están separados por un espacio.
Especificación de salida:
Para cada caso de prueba, imprima en una línea el precio más alto que podemos esperar de algunos minoristas, con una precisión de hasta 2 decimales, y el número de minoristas que venden al precio más alto. Debe haber un espacio entre los dos números. Se garantiza que el precio no superará los 10 10.
Entrada de muestra:
9 1.80 1.00
1 5 4 4 -1 4 5 3 6
Salida de muestra:
1.85 2
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <ctime>
#include <cctype>
#include <bitset>
#include <utility>
#include <sstream>
#include <complex>
#include <iomanip>
#include<climits>//INT_MAX
//#include<bits/stdc++.h>
#define PP pair<ll,int>
#define inf 0x3f3f3f3f
#define llinf 0x3f3f3f3f3f3f3f3fll
#define dinf 1000000000000.0
#define PI 3.1415926
typedef long long ll;
using namespace std;
int const mod=1e9+7;
const int maxn=1e5+10;
vector<int>a[maxn];
vector<int>jg;
int n,mx;
double P,r;
void dfs(int v,int h)
{
if(a[v].size()==0)
{
if(h>mx)
{
mx=h;
jg.clear();
jg.push_back(v);
}
else if(h==mx)
jg.push_back(v);
return;
}
for(int i=0;i<a[v].size();i++)
{
int u=a[v][i];
dfs(u,h+1);
}
}
int main()
{
scanf("%d%lf%lf",&n,&P,&r);
r/=100;
int root;
for(int i=0;i<n;i++)
{
int x;
scanf("%d",&x);
if(x!=-1)
a[x].push_back(i);
else
root=i;
}
dfs(root,1);
printf("%.2f %d",P*pow(1+r,mx-1),jg.size());
return 0;
}