最短路(Floyd_Warshall) POJ 2253 Frogger
2015-03-27 18:26
459 查看
题目传送门
/* 最短路:Floyd算法模板题 */ #include <cstdio> #include <iostream> #include <algorithm> #include <cmath> #include <cstring> #include <string> #include <vector> using namespace std; const int MAXN = 200 + 10; const int INF = 0x3f3f3f3f; double d[MAXN][MAXN]; int used[MAXN]; struct NODE { int x, y; }node[MAXN]; double dis(int j, int i) { return sqrt ((node[j].x - node[i].x) * (node[j].x - node[i].x) + (node[j].y - node[i].y) * (node[j].y - node[i].y)); } void Floyd_Warshall(int n) { for (int k=1; k<=n; ++k) { for (int i=1; i<=n-1; ++i) { for (int j=i+1; j<=n; ++j) { if (d[i][k] < d[i][j] && d[k][j] < d[i][j]) { if (d[i][k] < d[k][j]) d[i][j] = d[j][i] = d[k][j]; else d[i][j] = d[j][i] = d[i][k]; } } } } printf ("Frog Distance = %.3f\n", d[1][2]); } int main(void) //POJ 2253 Frogger { //freopen ("D.in", "r", stdin); int n; int cnt = 0; int first = 1; while (~scanf ("%d", &n) && n) { for (int i=1; i<=n; ++i) { scanf ("%d%d", &node[i].x, &node[i].y); } for (int i=1; i<=n-1; ++i) { for (int j=i+1; j<=n; ++j) { d[i][j] = d[j][i] = dis (i, j); } } printf ("Scenario #%d\n", ++cnt); Floyd_Warshall (n); puts (""); } return 0; } /* Scenario #1 Frog Distance = 5.000 Scenario #2 Frog Distance = 1.414 */
相关文章推荐
- poj 2253 Frogger(最短路 floyd)
- POJ 2253 Frogger最短路(floyd)
- poj 2253 Frogger (最短路Floyd)
- poj 2253 Frogger (最短路Floyd)
- Frogger POJ - 2253(Floyd最短路变形)
- poj2253~Frogger(最短路floyd)
- Floyd-Warshall算法(求解任意两点间的最短路) 详解 + 变形 之 poj 2253 Frogger
- POJ 2253 Frogger(最短路--floyd变形)
- POJ 2253 Frogger(翻译/最短路/floyd/思维)
- POJ2253 Frogger -DIJKSTRA || FLOYD最短路练习
- POJ 2253Frogger(最短路floyd)
- 文章标题 POJ 2253 : Frogger(最短路--Floyd)
- POJ 2253 Frogger(最短路 Floyd)
- POJ训练计划2253_Frogger(最短路/floyd)
- POJ 2253 Frogger (Floyd 松弛操作)
- POJ2253——Frogger(Floyd变形)
- POJ 2253Frogger(dijk最短路变形)
- POJ 2253 - Frogger (floyd)
- POJ 2253 Frogger(Floyd)
- POJ 2253 Frogger(floyd 或 dijstra)