解题思路:
自底向上找到从target到起始节点的路径,根据target节点是否有子节点来判断青蛙是在target原地跳还是跳到别的节点。
class Solution:
def frogPosition(self, n: int, edges: List[List[int]], t: int, target: int) -> float:
dict1=defaultdict(list)
if not edges:
ans=1
else:
if target==1:
if t==0:
ans=1
else:
ans=0
else:
father=[0]*(n+1)
for ee in edges:
min_e=min(ee)
max_e=max(ee)
dict1[min_e].append(max_e)
father[max_e]=min_e
ff=father[target]
father_list=[]
father_list.append(ff)
if ff==1:
if t==1:
ans=1/len(dict1[ff])
elif t>1:
if not dict1[target]:
ans=1/len(dict1[ff])
else:
ans=0
else:
ans=0
else:
while ff!=1:
ff=father[ff]
father_list.append(ff)
father_list=father_list[::-1]
if t==len(father_list):
ans=1
for j in father_list:
ans=ans*len(dict1[j])
ans=1/ans
elif t>len(father_list):
if not dict1[target]:
ans=1
for j in father_list:
ans=ans*len(dict1[j])
ans=1/ans
else:
ans=0
else:
ans=0
return(ans)