SOURCE

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 命令行工具 X clear

                    
>
console