# Leetcode 399. Evaluate Division ## 題解 ### Union Find (待補) ```python! ``` ### DFS ```python! class Solution: def calcEquation(self, equations: List[List[str]], values: List[float], queries: List[List[str]]) -> List[float]: graph = {} for i, data in enumerate(equations): src, target = data if src not in graph: graph[src] = {} if target not in graph: graph[target] = {} graph[src][target] = values[i] graph[target][src] = 1 / values[i] def dfs(src, target, visits, ans): if src not in graph or target not in graph or src in visits: return -1 visits.add(src) if src == target: return ans for nei in graph[src]: res = dfs(nei, target, visits, ans * graph[src][nei]) if res != -1: # 是答案才返回 return res return -1 return [dfs(q[0], q[1], set(), 1) for q in queries] ```