uva10099
题目链接请戳 这里
解题思路
用floyd。思路和噪声那道很像。
区别是初始化有区别吧。因为要max所以初始化要都变为0.
还有题意。导游也占了一个位置。
然后这次我又没有把回边也初始化了。。。T_T
代码
#include<stdio.h> #include<string.h> #include<math.h> #include<algorithm> #define N 110 using namespace std; int d[N][N]; int n, m; int s, a, t; int 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][k] > 0 && d[k][j] > 0) d[i][j] = max(d[i][j], min(d[i][k], d[k][j])); return d[s][a]; } int main() { int tests = 0; scanf("%d%d", &n, &m); while (!(n == 0 && m == 0)) { for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) d[i][j] = 0; for (int i = 0; i < m; i++) { int u, v, w; scanf("%d%d%d", &u, &v, &w); d[u][v] = w; d[v][u] = w; } scanf("%d%d%d", &s, &a, &t); printf("Scenario #%d\n", ++tests); int max_num = floyd(); int times = ceil((double)t / (max_num - 1)); printf("Minimum Number of Trips = %d\n", times); printf("\n"); scanf("%d%d", &n, &m); } return 0; }