我是笨逼,代码长又大:
n, p, r = [float(x) for x in input().split()]
m = list(map(int, input().split()))
for i in range(len(m)):
if m[i] == -1:
root = i
# print(m)
break
vis = [0] * int(n)
vis[root] = 1
newcount, count, index = 0, 0, 0
def dfs(root):
global count
global newcount
global index
if root not in m:
if newcount > count:
count = newcount
index = 1
elif newcount == count:
index += 1
return
for i in range(len(m)):
if not vis[i] and m[i] == root:
k = root
root = i
vis[i] = 1
newcount += 1
dfs(root)
root = k
vis[i] = 0
newcount -= 1
dfs(root)
for i in range(count):
p = p * (1 + r/100)
print('%.2f' % p, index)
赶紧学一下大佬的,再写写:
def main():
a = list(map(eval, input().split()))
d, j, k, m = {}, 0, -2, [-1]
for i in list(map(int, input().split())):
try:
d[i].append(j)
except:
d[i] = [j]
j += 1
# print(d, m)
while m:
l, n = 0, []
for i in m:
try:
n.extend(d[i])
except:
l += 1
m, k = n, k + 1
print("{:.2f}".format(a[1] * (1 + a[2] / 100) ** k), l)
main()