最开始还想不用d 直接用e来判断 可是好**啊 不想动脑子
```
#include <bits/stdc++.h>
using namespace std;
const int N =1e5+10;
const int mod =11451419;
#define endl '\n'
#define Endl '\n'
#define inf 1e18
#define int long long
#define fast ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
typedef pair<double,int> PII;
int n,m,x,y;
int h[N],e[N<<1],ne[N<<1],idx;
double w[N<<1],d[N<<1];
bool st[N<<1];
vector<int>ans;
void add(int a,int b,double c){
e[idx]=b;
w[idx]=1-c/100;
ne[idx]=h[a];
h[a]=idx++;
}
void dijk(){
priority_queue<PII>p;
memset(d,0,sizeof d);
d[x]=1;
p.push({1,x});
while(!p.empty()){
auto t=p.top();
p.pop();
int ver=t.second;
double dis=t.first;
if(st[ver])continue;
st[ver]= true;
for(int i=h[ver];~i;i=ne[i]){
int j=e[i];
if(d[j]<dis*w[i]){
d[j]=dis*w[i];
p.push({d[j],j});
}
}
}
}
signed main(){
cin>>n>>m;
memset(h,-1,sizeof h);
for(int i=0;i<m;i++){
int a,b,c;cin>>a>>b>>c;
add(a,b,c),add(b,a,c);
}
cin>>x>>y;
dijk();
printf("%.8lf",100/d[y]);
return 0^0;
}
```