1class Solution:2def equationsPossible(self, equations: List[str]) -> bool:3from collections import defaultdict45g = defaultdict(list)6for e in equations:7if e[1] == "=":8x = e[0]9y = e[3]10g[x].append(y)11g[y].append(x)1213# marked the connected components as 0,1,2,...,2514ccs = defaultdict(lambda: -1) # -1 means unmarked or unseen1516def dfs(node, cc):17if node not in ccs:18ccs[node] = cc19for neighbour in g[node]:20dfs(neighbour, cc)2122for i in range(26):23dfs(chr(i + 97), i)2425for e in equations:26if e[1] == "!":27x = e[0]28y = e[3]29if ccs[x] == ccs[y]:30return False31return True