UVA 10803 Thunder Mountain
生活随笔
收集整理的這篇文章主要介紹了
UVA 10803 Thunder Mountain
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
糾結(jié)在這句話了If it is impossible to get from some town to some other town, print "Send Kurdy" instead. Put an empty line after each test case.
題目要求是如果一旦存在一個點不能到達(dá)另一個點就輸出Send Kurdy?
注意處理時跳過邊長超過10的再跑FLOYD。之后在所有最短路中查找最大值即可
#include <map> #include <set> #include <list> #include <cmath> #include <ctime> #include <deque> #include <stack> #include <queue> #include <cctype> #include <cstdio> #include <string> #include <vector> #include <climits> #include <cstdlib> #include <cstring> #include <iostream> #include <algorithm> #define LL long long #define PI 3.1415926535897932626 using namespace std; int gcd(int a, int b) {return a % b == 0 ? b : gcd(b, a % b);} #define MAXN 105 double dp[MAXN][MAXN]; int x[MAXN],y[MAXN]; int N; int main() {//freopen("sample.txt","r",stdin);int T,kase = 1;scanf("%d",&T);while (T--){scanf("%d",&N);for (int i = 0; i <= N; i++)for (int j = 0; j <= N; j++)dp[i][j] = 10000000.0;for (int i = 1; i <= N; i++) scanf("%d%d",&x[i],&y[i]);for (int i = 1; i <= N; i++)for (int j = 1; j <= N; j++){double tmp = (x[i] - x[j]) * (x[i] - x[j]) + (y[i] - y[j]) *(y[i] - y[j]);if (tmp > 100.0) continue;dp[i][j] = min(dp[i][j],sqrt(tmp));}for (int k = 1; k <= N; k++)for (int i = 1; i <= N; i++)for (int j = 1; j <= N; j++)dp[i][j] = min(dp[i][j],dp[i][k] + dp[k][j]);double ans = 0.0;for (int i = 1; i <= N; i++)for (int j = 1; j <= N; j++){ans = max(ans,dp[i][j]);}printf("Case #%d:\n",kase++);if (ans == 10000000.0) puts("Send Kurdy");else printf("%.4lf\n",ans);putchar('\n');}return 0; }?
轉(zhuǎn)載于:https://www.cnblogs.com/Commence/p/4014081.html
總結(jié)
以上是生活随笔為你收集整理的UVA 10803 Thunder Mountain的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自学HTML5第三节(拖放效果)
- 下一篇: 树转换为二叉树小技巧