1
var calcEquation = function (equations, values, queries) {4
for (let i = 0; i < queries.length; i++) {5
const currQuery = queries[i];7
const [currStart, currDestination] = currQuery;11
const additionalEdges = [];12
const additionalValues = [];14
const visited = new Set();16
equations.forEach((el, idx) => {17
const [to, from] = el;18
const val = values[idx];20
additionalEdges.push([from, to]);21
additionalValues.push(1 / val);24
values = [...values, ...additionalValues];26
for (const [from, to] of [...equations, ...additionalEdges]) {27
if (!(from in adj)) adj[from] = [];29
adj[from].push([to, values[idx]]);34
if (!(currStart in adj) || !(currDestination in adj)) {39
if (currStart === currDestination) {44
let currEvaluation = 1;46
const subResult = dfs(currStart);47
if (!found) res.push(-1);50
if (!node) return null;51
if (node === currDestination) {55
const children = adj[node]; // [ [to, val] ]57
if (!children) return false;59
for (const child of children) {60
if (visited.has(node)) continue;63
currEvaluation = currEvaluation * child[1];65
if (dfs(child[0]) === true) {66
!found && res.push(currEvaluation);71
currEvaluation /= child[1];