var minimumCost = function (n, edges, query) {
let parent = []
const merge = (v) => {
if (parent[v] !== v) parent[v] = merge(parent[v])
return parent[v]
}
const costs = []
for (let i = 0; i < n; i++) {
parent[i] = i
costs[i] = 131071
}
for (const [u, v, w] of edges) {
const p1 = merge(u)
const p2 = merge(v)
parent[p1] = p2
costs[p1] = costs[p2] = costs[p1] & costs[p2] & w
}
for (let i = 0; i < n; i++) {
parent[i] = merge(i)
}
const result = []
for (const [s, t] of query) {
if (s === t) result.push(0)
else if (parent[s] === parent[t]) {
result.push(costs[parent[s]])
} else result.push(-1)
}
return result
}
console.log(
minimumCost(
5,
[
[0, 1, 7],
[1, 3, 7],
[1, 2, 1],
],
[
[0, 3],
[3, 4],
],
),
)