def solve_case(W, E, existing_western_connections, existing_eastern_connections, overpass_connections): # Initialize adjacency matrix INF = 10**18 adj = [[INF]*(W+E) for _ in range(W+E)] for i in range(W-1): adj[i][i+1] = 1 adj[i+1][i] = 1 adj[i][W+E-1] = INF adj[W+E-1][i] = INF for i in range(E-1): adj[W+i][W+i+1] = 1 adj[W+i+1][W+i] = 1 adj[i+W][W+E-1] = INF adj[W+E-1][i+W] = INF for i in range(W-1): j = existing_western_connections[i]-1 adj[i][j] = 1 adj[j][i] = 1 for i in range(E-1): j = existing_eastern_connections[i]-1 adj[W+i][W+j] = 1 adj[W+j][W+i] = 1 # Calculate initial average distance total_distance = 0 for i in range(W+E): for j in range(i+1, W+E): total_distance += adj[i][j] initial_average_distance = total_distance / ((W+E)*(W+E-1)/2) # Calculate average distance for each option result = [] for west, east in overpass_connections: i, j = west-1, W+east-1 # Add overpass connection adj[i][j] = 1 adj[j][i] = 1 # Run Floyd-Warshall algorithm for k in range(W+E): for i in range(W+E): for j in range(W+E): adj[i][j] = min(adj[i][j], adj[i][k]+adj[k][j]) # Calculate average distance total_distance = 0 for i in range(W+E): for j in range(i+1, W+E): total_distance += adj[i][j] average_distance = total_distance / ((W+E)*(W+E-1)/2) result.append(average_distance) # Remove overpass connection adj[i][j] = INF adj[j][i] = INF return result # Read input T = int(input()) for case in range(1, T+1): W, E, C = map(int, input().split()) existing_western_connections = list(map(int, input().split())) existing_eastern