class Solution {
private:
int fa[26];
public:
int DFS(int x)
{
if(fa[x]!=x)
fa[x]=DFS(fa[x]);
return fa[x];
}
bool equationsPossible(vector<string>& equations) {
int len=equations.size();
for(int i=0;i<26;i++)
fa[i]=i;
for(int i=0;i<len;i++)
{
int x=equations[i][0]-'a';
int y=equations[i][3]-'a';
string op=equations[i].substr(1,2);
if(op=="==")
{
fa[DFS(x)]=DFS(y);
}
}
for(int i=0;i<len;i++)
{
int x=equations[i][0]-'a';
int y=equations[i][3]-'a';
string op=equations[i].substr(1,2);
if(op=="!=")
{
if(DFS(x)==DFS(y))
{
return false;
}
}
}
return true;
}
};