#include<stdio.h>
#include<algorithm>
#include<vector>
#include<queue>
using namespace std;
int g[110][110];
vector<int>g2[110];
int p[11000];
int q[11000];
int r[11000];
pair<int,int> pt[110];
double dp[110];
double dp2[110];
int main(){
    int a,b,c;
    while(scanf("%d%d%d",&a,&b,&c),a){
        for(int i=0;i<a;i++)for(int j=0;j<a;j++)g[i][j]=999999999;
        for(int i=0;i<a;i++)g[i][i]=0;
        for(int i=0;i<a;i++){g2[i].clear();}
        for(int i=0;i<b;i++){
            scanf("%d%d%d",p+i,q+i,r+i);
            g[p[i]][q[i]]=g[q[i]][p[i]]=r[i];
        }
        for(int k=0;k<a;k++)for(int i=0;i<a;i++)for(int j=0;j<a;j++)
            g[i][j]=min(g[i][j],g[i][k]+g[k][j]);
        for(int i=0;i<b;i++){
            int P=p[i];
            int Q=q[i];
            int R=r[i];
            if(g[0][P]+R==g[0][Q]&&g[Q][a-1]+R==g[P][a-1]){
                g2[P].push_back(Q);
            }
            swap(P,Q);
            if(g[0][P]+R==g[0][Q]&&g[Q][a-1]+R==g[P][a-1]){
                g2[P].push_back(Q);
            }
        }
        for(int i=0;i<110;i++)dp[i]=0;
        dp[0]=1;
        for(int i=0;i<a;i++)pt[i]=make_pair(g[0][i],i);
        std::sort(pt,pt+a);
        for(int i=0;i<a;i++){
            int at=pt[i].second;
            for(int j=0;j<g2[at].size();j++){
                dp[g2[at][j]]+=dp[at];
            }
        }
		double tot=dp[a-1];
		
        for(int i=0;i<c;i++){
            int t;scanf("%d",&t);
			for(int j=0;j<a;j++)dp2[j]=0;
			dp2[t]=1;
			for(int j=0;j<a;j++){
				int at=pt[j].second;
				for(int k=0;k<g2[at].size();k++){
					dp2[g2[at][k]]+=dp2[at];
				}
			}
			printf("%.12f\n",dp2[a-1]/tot*dp[t]);
        }
        printf("\n");
    }
}