CP
LeetcodeGraph

399. Evaluate Division

class Solution:
    def calcEquation(self, equations: list[list[str]], values: list[float], queries: list[list[str]]) -> list[float]:
        G = defaultdict(dict)
        for (a, b), v in zip(equations, values):
            G[a][a] = G[b][b] = 1
            G[a][b] = v
            G[b][a] = 1 / v

        for k in G:
            for i in G[k]:
                for j in G[k]:
                    G[i][j] = G[i][k] * G[k][j] if i != j else 1

        result = []
        for a, b in queries:
            result.append(G[a].get(b, -1))

        return result