#include #define rep(i,a,b) for(int i=a;i> H >> W >> K; rep(y, 0, H) cin >> B[y]; rep(y, 0, H) rep(x, 0, W) T[y][x] = -1; rep(i, 0, K) { int a, b, c, d; cin >> a >> b >> c >> d; a--; b--; c--; d--; T[a][b] = c * W + d; T[c][d] = a * W + b; } rep(y, 0, H) rep(x, 0, W) if (B[y][x] == 'A') { ans[0][y][x] = 1; B[y][x] = 'O'; } rep(lo, 0, LOOP) { int cur = lo % 2; int nxt = (lo + 1) % 2; rep(y, 0, H) rep(x, 0, W) { if(B[y][x] == '%') ans[nxt][y][x] = ans[cur][y][x]; else ans[nxt][y][x] = 0; } rep(y, 0, H) rep(x, 0, W) if (B[y][x] != '%') if(ans[cur][y][x]) { rep(i, 0, 4) { int xx = x + dx[i]; int yy = y + dy[i]; if (xx < 0 || W <= xx) continue; if (yy < 0 || H <= yy) continue; if (B[yy][xx] == '#') continue; if (B[yy][xx] == '*') continue; if (0 <= T[yy][xx]) { int t = T[yy][xx]; yy = t / W; xx = t % W; } ans[nxt][yy][xx] += ans[cur][y][x] / 4; } } } int idx = LOOP % 2; double sm = 0; rep(y, 0, H) rep(x, 0, W) if (B[y][x] == '%') sm += ans[idx][y][x]; printf("%.10f\n", sm); }