class UnionFind{
constructor() {
this.parent={}
}
find(x) {
if(!this.parent[x]) {
this.parent[x] =x
}
if(this.parent[x] !==x) {
this.parent[x] = this.find(this.parent[x])
}
console.log(this.parent)
return this.parent[x]
}
union(x,y) {
const rootX = this.find(x);
const rootY = this.find(y);
if(rootX !== rootY) {
this.parent[rootX] = rootY
}
}
}
function areEquationsPossible(equations){
const uf = new UnionFind();
for(let equation of equations) {
if(equation.includes('=')){
const [a,b] = equation.split('=').map(e => e.trim());
uf.union(a,b)
}
}
for(let equation of equations) {
if(equation.includes('!')){
const [a,b] = equation.split('!').map(e=>e.trim());
if(uf.find(a) === uf.find(b)){
return false
}
}
}
return true
}
const equations = ['a=b', 'a=c', 'b!c'];
console.log(areEquationsPossible(equations))
console