#include<iostream>
#include<algorithm>

using namespace std;

int main(){
  for(int n,m,p;cin>>n>>m>>p,n;){
    double nr[100][100]={};
    int d[100][100];
    const int INF=1<<29;
    fill(d[0],d[100],INF);
    for(int i=0;i<n;i++){
      d[i][i]=0;
    }
    while(m--){
      int s,t,u;
      cin>>s>>t>>u;
      d[s][t]=d[t][s]=u;
      nr[s][t]=nr[t][s]=1;
    }
    for(int i=0;i<n;i++){
      for(int j=0;j<n;j++){
	for(int k=0;k<n;k++){
	  int nd=d[j][i]+d[i][k];
	  if(nd<=d[j][k]){
	    if(nd<d[j][k]){
	      nr[j][k]=0;
	    }
	    d[j][k]=nd;
	    nr[j][k]+=nr[j][i]*nr[i][k];
	  }
	}
      }
    }
    while(p--){
      int c;
      cin>>c;
      cout.precision(9);
      cout<<fixed<<((c==0||c==n-1)?1:(d[0][c]+d[c][n-1]!=d[0][n-1])?0:nr[0][c]*nr[c][n-1]/nr[0][n-1])<<endl;
    }
    cout<<endl;
  }
}