我同学的代码,连样例都没过,直接AC?!
#include <bits/stdc++.h>
using namespace std;
int i,j,k,n,m,x,y,z,A,B;
double a[2001][2001],dis[10001],ans,maxx;
bool vis[10001];
int main(){
memset(dis,0,sizeof(dis));
cin>>n>>m;
for(i = 1;i <= m;i++){
cin>>x>>y>>a[x][y];
a[x][y] = (100 - a[x][y]) / 100;
a[y][x] = a[x][y];
}
cin>>A>>B;
for(i = 1;i <= n;i++){
dis[i] = a[A][i];
}
dis[A] = 1;
vis[A] = 1;
for(i = 1;i < n;i++){
maxx = 0;
for(j = 1;j <= n;j++){
if(vis[j] == 0 && maxx < dis[j]){
maxx = dis[j];
k = j;
}
}
vis[k] = 1;
if(k == B){
break;
}
for(j = 1;j <= n;j++){
if(vis[j] == 0 && dis[k] * a[k][j] > dis[j]){
dis[j] = dis[k] * a[k][j];
}
}
}
ans = 100.0 / (double)dis[B];
printf("%.8lf",ans);
return 0;
}