dji模板,阳历输出103.00000000
#include<bits/stdc++.h>
using namespace std;
int n,m;
double dis[50004];
bool vis[50004];
struct node
{
int u;
double val;
};
vector<node> e[50004];
bool operator < (const node &a,const node &b)
{
return a.val>b.val;
}
void dijkstra(int s)
{
priority_queue<node> q;
for(int i=1;i<=n;i++)dis[i]=double(INT_MAX);
q.push((node){s,100.0});
dis[s]=100.0;
while(!q.empty())
{
node f=q.top();
q.pop();
if(vis[f.u])continue;
vis[f.u]=1;
for(node k:e[f.u])
{
double w=dis[f.u]*k.val;
if(dis[k.u]>dis[f.u]+w)
{
dis[k.u]=dis[f.u]+w;
q.push((node){k.u,dis[k.u]});
}
}
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int x,y;double z;
cin>>x>>y>>z;
e[x].push_back((node){y,z/100.0});
e[y].push_back((node){x,z/100.0});
}
int x,y;
cin>>x>>y;
dijkstra(x);
printf("%.8lf",dis[y]);
// cout<<dis[y];
}