过了样例,但是却是0分
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int m,n,k1,k2;
int fst[500005];
int last[500005];
int vis[500005];
double dis[500005];
int cnt;
struct xytsb
{
int u,nxt;
double v;
}arr[500005];
void adds(int r,int l,int w)
{
arr[++cnt].u=l,arr[cnt].v=1.0-w/100.0,arr[cnt].nxt=fst[r],fst[r]=cnt;
}
void Dijkstra(int k1)
{
memset(dis,0,sizeof(vis));
vis[k1]=1;
dis[k1]=1.0;
for(int i=1;i<m;++i)
{
for(int j=fst[k1];j;j=arr[j].nxt)
{
int tmp=arr[j].u;
if(dis[k1]*arr[j].v>dis[tmp])
{
dis[tmp]=dis[k1]*arr[j].v;
last[tmp]=k1;
}
}
int mid=0x3f3f3f3f;
for(int j=1;j<=m;++j)
{
if(vis[j]==0&&dis[j]<mid)
mid=dis[j],k1=j;
}
vis[k1]=1;
if(k1==k2)
{
return;
}
}
}
int main()
{
cin>>m>>n;
for(int i=1;i<=n;++i)
{
int x,y,z;
cin>>x>>y>>z;
adds(x,y,z);
adds(y,x,z);
}
cin>>k1>>k2;
Dijkstra(k1);
printf("%.8lf\n",100/dis[k2]);
}