Dijkstra, however, considers the common shortest single-source path as the maximum single-source path. Operators are multiplication rather than addition. The Double type is used for storage. The details need to be carved before submission. Question: # include <iostream> # include <stdio. h> # include <string. h> # include <queue> # include <math. h ># include <algorithm> using namespace std; double map [102] [102]; double dist [102]; int visited [102]; int main () {# ifndef ONLINE_JUDGE freopen ("in.txt", "r", stdin); # endif int n, m; while (scanf ("% d", & n, & m) = 2) {memset (map, 0, sizeof (map); for (int I = 0; I <m; I ++) {int, b; double p; scanf ("% d % lf", & a, & B, & p ); map [A-1] [b-1] = map [b-1] [A-1] = p;} for (int I = 0; I <n; I ++) {map [I] [I] = 100;} memset (dist, 0, sizeof (dist); memset (visited, 0, sizeof (visited )); dist [0] = 100; for (int I = 0; I <n; I ++) {double max = 0; int k = 0; for (int j = 0; j <n; j ++) {if (visited [j] = 0 & dist [j]> max) {max = dist [j]; k = j ;}} visited [k] = 1; for (int j = 0; j <n; j ++) {if (dist [j] <dist [k] * map [k] [j]/100) {dist [j] = dist [k] * map [k] [j]/100 ;}} printf ("%. 6lf percent \ n ", dist [n-1]);} return 0 ;}