from typing import List, Tuple def floyd_warshall(n: int, graph: List[List[int]]) -> List[List[int]]: dist = [[float("inf")] * n for _ in range(n)] for i in range(n): dist[i][i] = 0 for u in range(n): for v, w in enumerate(graph[u]): if w != 0: dist[u][v] = w for k in range(n): for i in range(n): for j in range(n): dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j]) return dist def solve_case(w: int, e: int, c: int, west: List[int], east: List[int], queries: List[Tuple[int, int]]) -> List[float]: graph = [[0] * (w + e) for _ in range(w + e)] for i in range(w - 1): graph[i][west[i] - 1] = 1 graph[west[i] - 1][i] = 1 for i in range(e - 1): graph[i + w][east[i] - 1 + w] = 1 graph[east[i] - 1 + w][i + w] = 1 dist = floyd_warshall(w + e, graph) ans = [] for i in range(c): u, v = queries[i] u -= 1 v -= 1 + w graph[u][v] = 1 graph[v][u] = 1 new_dist = floyd_warshall(w + e, graph) total_dist = sum(sum(new_dist[u]) for u in range(w + e)) ans.append(total_dist / ((w + e) * (w + e - 1))) graph[u][v] = 0 graph[v][u] = 0 return ans t = int(input()) for i in range(1, t + 1): w, e, c = map(int, input().split()) west = list(map(int, input().split())) east = list(map(int, input().split())) queries = [tuple(map(int, input().split())) for _ in range(c)] ans = solve_case(w, e,