Cell mitosis using DFS

sir i try solving this cell mitosis ques using dfs also i’m trying to use memoisation in this then i’m getting a wrong answer bcoz of memoisation it is not working accordingly
could u help solving this ques using dfs+memoisation

my code --:
from sys import *
from collections import defaultdict as dt
setrecursionlimit(10**6)
def si(): return stdin.readline()
def mi():return map(int,stdin.readline().split())
def li():return list(mi())
class graph:
def init(self,n):
self.d=dt(lambda:[])
def addvrtx(self,src):
if(src-1>=1):self.d[src].append((src-1,x))
if(src+1<=n):self.d[src].append((src+1,y))
if(2src<=n):self.d[src].append((2src,z))
def dfs(self,node,par,cost):
if(d[node]!=float(‘inf’):return d[node]
if(node==n):return cost
for i in self.d[node]:
if(i[0]!=par):
dp[node]=min(self.dfs(i[0],node,cost+i[1])-cost,dp[node])
return dp[node]+cost
n=int(si());x,y,z=mi();
g=graph(n)
dp=dt(lambda:float(‘inf’))
g.d[1].append((2,y))
for i in range(2,n+1):
g.addvrtx(i)
print(g.dfs(1,1,0))

@coding_daddy
I think you can also agree your code is not readable this way. Especially considering python which is an indented language. Please send your code on CB IDE.