RT,在样例的输出中本来输出是 103.07153164,可是经过宇宙射线影响它变成了 103.09278351。
#include<bits/stdc++.h>
using namespace std;
int n,m;
double w[2010][2010],dis[2010];
bool vis[2010];
priority_queue<pair<double,int> >q;
void Dijkstra(int s){
for(int i=1;i<=n;i++){
dis[i]=INT_MAX;
vis[i]=0;
}
dis[s]=1;
q.push(make_pair(1,s));
while(q.size()){
int x=q.top().second;
q.pop();
if(vis[x]){
continue;
}
vis[x]=1;
for(int i=1;i<=n;i++){
if(i==x){
continue;
}
if(dis[i]>dis[x]*w[x][i]){
dis[i]=dis[x]*w[x][i];
q.push(make_pair(dis[i],i));
}
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
int x,y;
double z;
cin>>x>>y>>z;
z=1-z/100.0;
w[x][y]=z;
}
int s,t;
cin>>s>>t;
Dijkstra(s);
printf("%.8lf",100/dis[t]);
return 0;
}