链接:
https://www.nowcoder.com/questionTerminal/24429a3319e4466790e65a647130b118
来源:牛客网
这道题就是一个树的简单搜索。
在做这道题的时候,我发现它的示例输入是
9 1.80 1.00
1 5 4 4 -1 4 5 3 6
但是在计算的时候并不是1.00而是按照1.01来算的
最后的测试用例也是乱七八糟的,都不知道别人都是怎么会ac的。(所以我自己用eclipse测试了几组数据)
以下是我的java代码,用到了一个数组来保存层数,比BFS简单但是耗时稍微长一点。
import java.util.*;
import java.io.*;
public class Text{
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
double p=sc.nextDouble();
double r=sc.nextDouble();
int []retail=new int[n];
for(int i=0;i<n;i++)
retail[i]=sc.nextInt();
int []level=new int[n];
int max=0;
for(int i=0;i<n;i++)
{
int j=i;
while(retail[j]!=-1)
{
j=retail[j];
level[i]++;
if(level[i]>max)
max=level[i];
}
}
int count=0;
for(int i=0;i<n;i++)
if(level[i]==max)
count++;
double sum=p;
for(int i=0;i<max;i++)
sum*=r;
System.out.print(String.format("%.2f",sum)+" "+count);
}
}