Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <cstring>
- #include <cmath>
- #include <iostream>
- #include <vector>
- #include <string>
- #include <set>
- #include <queue>
- #include <map>
- #include <algorithm>
- using namespace std;
- float d[2][12][12] = {0};
- int l[4] = {0, -1, 0, 1};
- int r[4] = {1, 0, -1, 0};
- float c[12][12];
- int main(){
- int t;
- scanf("%d", &t);
- for (int t0 = 0; t0 < t; t0++){
- int n, m, a, b, e, f, p;
- scanf("%d%d%d%d%d%d%d", &n, &m, &a, &b, &e, &f, &p);
- a++;
- b++;
- e++;
- f++;
- for (int i = 1; i <= n; i++)
- for (int j = 1; j <= m; j++)
- d[0][i][j] = 0;
- d[0][a][b] = 1;
- for (int i = 1; i <= n; i++)
- for (int j = 1; j <= m; j++){
- float cnt = 4;
- if (i == 1 || i == n)
- cnt--;
- if (j == 1 || j == m)
- cnt--;
- c[i][j] = 1.0 / cnt;
- }
- for (int k = 1; k <= p; k++){
- int kk = k & 1, nk = kk ^ 1;
- d[kk][e][f] = d[nk][e][f];
- for (int i = 1; i <= n; i++){
- for (int j = 1; j <= m; j++){
- if (i == e && j == f){
- continue;
- }
- for (int q = 0; q < 4; q++){
- int ni = i + l[q],
- nj = j + r[q];
- d[kk][ni][nj] += d[nk][i][j] * c[i][j];
- }
- }
- }
- }
- printf("%0.8f\n", d[p & 1][e][f]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement