#include <bits/stdc++.h>
using namespace std;
#define val double
const int N = 203;
int n,m,k,q;
const val eps = 1e-12;
bool ele[N];
val R[N][N], U[N], a[N][N];
int main() {
register int i, j, u;
scanf("%d%d%d%d",&n,&m,&k,&q);
ele[0] = true;
for(i=1;i<=k;i++)
scanf("%d%d",&j,&u),
ele[j] = true, U[j] = u;
while(m--)
scanf("%d%d%d",&i,&j,&u),
R[i][j] += 1.0/u, R[j][i] += 1.0/u;
for(i=0;i<=n;i++)
if(ele[i]) a[i][i] = 1, a[i][n+1] = U[i];
else
for(j = 0;j<=n;j++)
a[i][i] += R[i][j], a[i][j] -= R[i][j];
for(i=0;i<=n;i++) {
int mx = 0;
for(j=1;j<=n;j++)
if( fabs(a[j][i]) > fabs(a[mx][i]) ) mx = j;
for(j=0;j<=n+1;j++) swap(a[i][j],a[mx][j]);
for(j=n+1;j>i;j--) a[i][j]/=a[i][i];
a[i][i] = 1;
for(j=0;j<=n;j++) {
if(j!=i && fabs(a[j][i])>eps)
for(u = i+1;u<=n+1;u++)
a[j][u] -= a[i][u]*a[j][i];
if(j!=i)
a[j][i] = 0;
}
}
while(q--) {
scanf("%d%d",&i,&j);
val res = a[i][n+1] - a[j][n+1];
if(fabs(res)<eps) printf("0.00\n");
else printf("%.2lf\n",res);
}
return 0;
}