本地测得数据点是对的,但是交上去全红力(悲
https://www.luogu.com.cn/problem/P1576
是精度问题么?
#include<bits/stdc++.h>
using namespace std;
#define maxn 2005
int n,m,A,B;
struct node{
int to;long double w;
};
struct node2{
int pos;long double dis;
bool operator <(const node2 &b)const{
return dis<b.dis;
}
};
long double dis[maxn];
int use[maxn];
priority_queue<node2>q;
vector<node>p[maxn];
void dijkstra(int sx){
for(int i=0;i<=maxn;i++)dis[i]=0;
q.push((node2){sx,1});
dis[sx]=1;
while(!q.empty()){
node2 now=q.top();q.pop();
int u=now.pos;
if(use[u])continue;
use[u]=1;
for(int i=0;i<p[u].size();i++){
int v=p[u][i].to;
if(dis[v]<dis[u]*p[u][i].w){
dis[v]=dis[u]*p[u][i].w;
q.push((node2){v,dis[v]});
}
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
int x,y;double z;
cin>>x>>y>>z;
p[x].push_back((node){y,1.0-z*0.01});
p[y].push_back((node){x,1.0-z*0.01});
}
cin>>A>>B;
dijkstra(A);
printf("%.8Lf",100/dis[B]);
return 0;
}