2
def catMouseGame(self, graph: List[List[int]]) -> int:3
def getPreStates(m, c, t):12
ans.append((m2, c, 1))15
def ifAllNextMovesFailed(m, c, t):18
if result[(m2, c, 2)] != 2:24
if result[(m, c2, 1)] != 1:28
result = defaultdict(lambda: 0)29
# key = (m,c,turn) value = (0/1/2)37
queue.append((0, i, t))40
queue.append((i, i, t))43
m, c, t = queue.popleft()45
for m2, c2, t2 in getPreStates(m, c, t):46
r2 = result[(m2, c2, t2)]50
if r == 3 - t: # can always win51
result[(m2, c2, t2)] = r52
queue.append((m2, c2, t2))53
elif ifAllNextMovesFailed(m2, c2, t2):54
result[(m2, c2, t2)] = 3 - t255
queue.append((m2, c2, t2))56
return result[(1, 2, 1)]