using
System;
using
System.Collections.Generic;
public
class
GFG {
static
Dictionary<
string
,
string
> parent
=
new
Dictionary<
string
,
string
>();
static
string
Find(
string
x)
{
if
(!parent.ContainsKey(x))
return
x;
return
parent[x] = Find(parent[x]);
}
static
void
UnionWords(
string
x,
string
y)
{
string
rootX = Find(x);
string
rootY = Find(y);
if
(rootX != rootY)
parent[rootX] = rootY;
}
static
string
AreEquivalentWords(List<
string
> A, List<
string
> B,
List<List<
string
> > pairs)
{
if
(A.Count != B.Count)
return
"no"
;
foreach
(
var
pair
in
pairs)
{
UnionWords(pair[0], pair[1]);
}
for
(
int
i = 0; i < A.Count; i++) {
if
(Find(A[i]) != Find(B[i]))
return
"no"
;
}
return
"yes"
;
}
public
static
void
Main(
string
[] args)
{
List<
string
> A
=
new
List<
string
>{
"blue"
,
"sky"
,
"is"
};
List<
string
> B
=
new
List<
string
>{
"pink"
,
"sky"
,
"of"
};
List<List<
string
> > pairs =
new
List<List<
string
> >{
new
List<
string
>{
"blue"
,
"hi"
},
new
List<
string
>{
"pink"
,
"hi"
},
new
List<
string
>{
"is"
,
"of"
}
};
string
result = AreEquivalentWords(A, B, pairs);
Console.WriteLine(result);
}
}