#include<bits/stdc++.h>
using namespace std;
const int N=1e4+5;
double dis[N];
bool vis[N];
vector<pair<int,int> > e[N];
struct Node
{
int id;
double val;
friend bool operator <(Node x,Node y)
{
return x.val>y.val;
}
};
priority_queue<Node> q;
int main()
{
int n,m,a,u,v,b;
double w;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++) dis[i]=-2000000000;
for(int i=1;i<=m;i++)
{
scanf("%d%d%lf",&u,&v,&w);
e[u].push_back(make_pair(v,1-w/100.0));
e[v].push_back(make_pair(u,1-w/100.0));
}
scanf("%d%d",&a,&b);
dis[a]=100.0;
vis[a]=1;
q.push((Node){a,dis[a]});
while(!q.empty())
{
u=q.top().id;
q.pop();
if(vis[u]) continue;
vis[u]=true;
for(int i=0;i<e[u].size();i++)
{
v=e[u][i].first;
w=e[u][i].second;
if(vis[v]) continue;
if(dis[v]>dis[u]*w)
{
dis[v]=dis[u]*w;
q.push((Node){v,dis[v]});
}
}
}
printf("%.8lf",dis[b]);
return 0;
}
对了会关的,很急,谢谢!