### calcEquation 
from collections import defaultdict
from typing import *
def f_gold(equations: List[List[str]], values: List[float], queries: List[List[str]]
) -> List[float]:
    def find(x):
        if p[x] != x:
            origin = p[x]
            p[x] = find(p[x])
            w[x] *= w[origin]
        return p[x]
    w = defaultdict(lambda: 1)
    p = defaultdict()
    for a, b in equations:
        p[a], p[b] = a, b
    for i, v in enumerate(values):
        a, b = equations[i]
        pa, pb = find(a), find(b)
        if pa == pb:
            continue
        p[pa] = pb
        w[pa] = w[b] * v / w[a]
    return [
        -1 if c not in p or d not in p or find(c) != find(d) else w[c] / w[d]
        for c, d in queries
    ]