题目:
题解:
最短路即可
#include <bits/stdc++.h>
using namespace std;
double pos[2005][2005];
int vis[2005];
double dis[2005];
int n,m;
int inf =0x3f3f3f3f;
int s,e;
void dij()
{
//memset(dis,inf,sizeof(dis));
dis[s]=1.0;
for(int i=1;i<=n;i++)
{
int t=-1;
for(int j=1;j<=n;j++)
{
if((t==-1||dis[j]>dis[t])&&!vis[j]) t=j;
}
vis[t]=1;
for(int j=1;j<=n;j++)
{
dis[j]=max(dis[j],dis[t]*pos[t][j]);
}
}
}
int main()
{
cin>>n>>m;
while(m--)
{
int a,b,c;
cin>>a>>b>>c;
double z=(100-c)*1.0/100.0;
pos[a][b]=pos[b][a]=max(pos[a][b],z);
}
cin>>s>>e;
dij();
//cout<<dis[e]<<endl;
printf("%.8f\n",100/dis[e]*1.0);
return 0;
}