UVA 1001 Say Cheese——最短路
2018-03-04 16:14
375 查看
不用求传递闭包,没有这样的数据#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
const int maxn = 110;
const int INF = 0x3f3f3f3f;
int kase = 0, n;
double dp[maxn][maxn];
struct Circle { int x, y, z, r; } c[maxn];
double dis(int i, int j) {
return sqrt(1.0*(c[i].x-c[j].x)*(c[i].x-c[j].x)+1.0*(c[i].y-c[j].y)*(c[i].y-c[j].y)+1.0*(c[i].z-c[j].z)*(c[i].z-c[j].z));
}
int main() {
while (~scanf("%d", &n) && ~n) {
for (int i = 1; i <= n; i++) scanf("%d %d %d %d", &c[i].x, &c[i].y, &c[i].z, &c[i].r);
scanf("%d %d %d", &c[n+1].x, &c[n+1].y, &c[n+1].z); c[n+1].r = 0;
scanf("%d %d %d", &c[n+2].x, &c[n+2].y, &c[n+2].z); c[n+2].r = 0;
for (int i = 1; i <= n+2; i++) {
for (int j = 1; j <= i; j++) {
dp[i][j] = dp[j][i] = max(0.0, dis(i, j)-c[i].r-c[j].r);
}
}
for (int k = 1; k <= n+2; k++) {
for (int i = 1; i <= n + 2; i++) {
for (int j = 1; j <= n+2; j++) {
dp[i][j] = min(dp[i][j], dp[i][k] + dp[k][j]);
}
}
}
printf("Cheese %d: Travel time = %d sec\n", ++kase, (int)(dp[n+1][n+2]*10+0.5));
}
return 0;
}
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
const int maxn = 110;
const int INF = 0x3f3f3f3f;
int kase = 0, n;
double dp[maxn][maxn];
struct Circle { int x, y, z, r; } c[maxn];
double dis(int i, int j) {
return sqrt(1.0*(c[i].x-c[j].x)*(c[i].x-c[j].x)+1.0*(c[i].y-c[j].y)*(c[i].y-c[j].y)+1.0*(c[i].z-c[j].z)*(c[i].z-c[j].z));
}
int main() {
while (~scanf("%d", &n) && ~n) {
for (int i = 1; i <= n; i++) scanf("%d %d %d %d", &c[i].x, &c[i].y, &c[i].z, &c[i].r);
scanf("%d %d %d", &c[n+1].x, &c[n+1].y, &c[n+1].z); c[n+1].r = 0;
scanf("%d %d %d", &c[n+2].x, &c[n+2].y, &c[n+2].z); c[n+2].r = 0;
for (int i = 1; i <= n+2; i++) {
for (int j = 1; j <= i; j++) {
dp[i][j] = dp[j][i] = max(0.0, dis(i, j)-c[i].r-c[j].r);
}
}
for (int k = 1; k <= n+2; k++) {
for (int i = 1; i <= n + 2; i++) {
for (int j = 1; j <= n+2; j++) {
dp[i][j] = min(dp[i][j], dp[i][k] + dp[k][j]);
}
}
}
printf("Cheese %d: Travel time = %d sec\n", ++kase, (int)(dp[n+1][n+2]*10+0.5));
}
return 0;
}
相关文章推荐
- UVa 1001 Say Cheese (Floyd)
- UVa 1001 Say Cheese - 最短路
- UVA 1001 Say Cheese(dijkstra算法)
- UVA 1001(p379)----Say Cheese
- UVa 1001 Say Cheese【floyd】
- UVA 1001 Say Cheese 奶酪里的老鼠(最短路,floyd)
- uva 1001 say cheese dijstra
- UVA 1001:Say Cheese(最短路)
- [Uva 1001] Say Cheese [Floyd]
- Say Cheese UVA - 1001
- 1001 - Say Cheese (Dijkstra算法)
- uva 11534 - Say Goodbye to Tic-Tac-Toe(Nim和)
- UVA 1001 Say Cheese(最短路)
- Uva1001-floyd算法-建图
- UVALive 6581 What does the fox say? (模拟)
- UVA1001 Say Cheese (dijkstra)
- UVa - 10929 - You can say 11
- poj 1001 uva 748 Exponentiation(高精度小数乘法)
- POJ3438 ZOJ2886 UVALive3822 Look and Say【数列+水题】
- UVa -- 10929 You can say 11