#!/bin/python3 import sys n, m, k = input().strip().split(' ') n, m, k = [int(n), int(m), int(k)] maze = [] rate = [] tunnels = {} for a0 in range(n): row = input().strip() # Write Your Code Here maze.append(row) rate.append([-1]*m) for a0 in range(k): i1, j1, i2, j2 = input().strip().split(' ') i1, j1, i2, j2 = [int(i1), int(j1), int(i2), int(j2)] # Write Your Code Here tunnels[(i1-1,j1-1)] = (i2-1, j2-1) tunnels[(i2-1,j2-1)] = (i1-1, j1-1) def dfs(r, c): if maze[r][c] == '%': return 1.0 elif (maze[r][c] == '0' or maze[r][c] == 'A') and rate[r][c] != -1: rate[r][c] = 0 if (r,c) in tunnels: r, c = tunnels[(r,c)] valid_paths = [] for dr, dc in [(-1, 0), (1, 0), (0, -1), (0,1)]: nr, nc = r + dr, c + dc if 0 <= nr < n and 0 <= nc < m and maze[nr][nc] != '#': valid_paths.append((nr, nc)) for nr, nc in valid_paths: rate[r][c] += dfs(nr, nc) / len(valid_paths) return rate[r][c] else: return 0 # Write Your Code Here for r in range(n): for c in range(m): if maze[r][c] == 'A': rate[r][c] = 0 print(dfs(r, c))