大意:不再赘述。
思路:可以用Floyd更新最大值。
CODE:
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <queue>
#include <map>
using namespace std;
map<string, int> my_map;
const int MAXN = 110;
double d[MAXN][MAXN];
int n, m;
void init()
{
memset(d, 0, sizeof(d));
}
void Floyd()
{
for(int k = 1; k <= n; k++)
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
{
if(d[i][j] < d[i][k] * d[k][j])
{
d[i][j] = d[i][k] * d[k][j];
}
}
}
int main()
{
while(scanf("%d", &n) && n)
{
init();
scanf("%d", &m);
while(m--)
{
int u, v, w;
scanf("%d%d%d", &u, &v, &w);
d[u][v] = d[v][u] = w*1.0/100;
}
Floyd();
double ans = d[1][n]*100.0;
printf("%.6lf percent\n", ans);
}
return 0;
}