#include #include #include #include #include #include #include #include #include #include using namespace std; #define pb push_back #define ll long long const int MOD=1e9+7; int N,M,K,L; char board[30][30]; map tun; double mat[410][410]; double temp[410][410]; const int dx[]={0,1,0,-1}; const int dy[]={1,0,-1,0}; void sq(){ for(int i=0;i>N>>M>>K; L=N*M; for(int i=1;i<=N;i++){ for(int j=1;j<=M;j++){ cin>>board[i][j]; } } for(int i=1;i<=K;i++){ int i1,j1,i2,j2;cin>>i1>>j1>>i2>>j2; int a=(i1-1)*M+j1-1,b=(i2-1)*M+j2-1; tun[a]=b; tun[b]=a; } int start,end; for(int i=1;i<=N;i++){ for(int j=1;j<=M;j++){ int a=(i-1)*M+j-1; if(board[i][j]=='A'){ start=a; } if(board[i][j]=='%') { end=a; mat[a][a]=1.0; continue; } if(board[i][j]=='*'){ mat[a][a]=1.0; continue; } if(board[i][j]=='#') continue; int cnt=0; for(int k=0;k<4;k++){ int x=i+dx[k],y=j+dy[k]; if(x<1 || y<1 || x>N || y>M) continue; if(board[x][y]=='#') continue; cnt++; } if(cnt==0) continue; for(int k=0;k<4;k++){ int x=i+dx[k],y=j+dy[k]; if(x<1 || y<1 || x>N || y>M) continue; if(board[x][y]=='#') continue; int b=(x-1)*M+y-1; if(tun.find(b)!=tun.end()){ b=tun[b]; } //cout<<"Connection: "<30) break; }while(i<10 || abs(p-mat[start][end])>1e-6); //for(int i=0;i