第一题双指针 第二题目做法复杂度爆炸,想不出来更好的: if __name__ == '__main__&(688)#39;:     n = int(input())     mat = [[0x3f3f3f3f for _ in range(n + 1)] for _ in range(n + 1)]     for i in range(n + 1):         mat[i][i] = 0     for _ in range(1, n):         a, b, c = list(map(int, input().split()))         mat[a][b] = c         mat[b][a] = c     for i in range(n + 1):         for j in range(n + 1):             for k in range(n + 1):                 if mat[i][k] + mat[k][j] < mat[i][j]:                     mat[i][j] = mat[i][k] + mat[k][j]     li_a = list(map(int, input().split()))[1:]     li_b = list(map(int, input().split()))[1:]     li_c = list(map(int, input().split()))[1:]     result = []     for a in li_a:         for b in li_b:             for c in li_c:                 result.append((mat[a][b] + mat[b][c] + mat[a][c]) / 2)     num = len(result)     print(sum(result) / num)