def solve(testcase):
n, m1, m2 = MI()
edges = []
for _ in range(m1):
u, v = GMI()
edges.append((u, v))
ufG = UnionFind(n)
for _ in range(m2):
u, v = GMI()
ufG.Union(u, v)
res = 0
ufF = UnionFind(n)
for u, v in edges:
if ufG.connected(u, v):
ufF.Union(u, v)
else:
res += 1
mp = ufG.all_group_members()
for rt in mp:
nodes = mp[rt]
m = len(nodes)
u = nodes[0]
for i in range(1, m):
v = nodes[i]
res += ufF.Union(u, v)
print(res)
for testcase in range(II()):
solve(testcase)

京公网安备 11010502036488号