This problem doesn't need an algorithm, even dfs. We simply construct a adjancent metric. Then for each point, try to find if its 2 child are linked. If so, we can calculate the degree of the trio.
The worst time complexity is O(n ** 3).
class Solution:
def minTrioDegree(self, n, edges):
adjMetric = [[False] * n for _ in range(n)]
for point1, point2 in edges:
point1, point2 = point1 - 1, point2 - 1
adjMetric[point1][point2] = True
adjMetric[point2][point1] = True
degree = [sum(row) for row in adjMetric]
minDegree = float('inf')
for point1 in range(n):
for point2 in range(point1 + 1, n):
for point3 in range(point2 + 1, n):
if adjMetric[point1][point2] \
and adjMetric[point2][point3] \
and adjMetric[point3][point1]:
minDegree = min(
minDegree,
degree[point1] + degree[point2] + degree[point3] - 6
)
if minDegree == float('inf'):
return -1
return minDegree