POJ 2253 —— Frogger
来源:互联网 发布:给二维数组赋初值 编辑:程序博客网 时间:2024/06/05 05:43
原题:http://poj.org/problem?id=2253
题意:有n个石头,给出每个石头的坐标;青蛙A在第一块石头,青蛙B在第二块石头,A要去找B;
求A到B的所有路径中最小的Frog Distance,Frog Distance定义为青蛙A在某条路径中所跳的最大距离;
#include<cstdio>#include<cstring>#include<string>#include<cmath>#define inf 1e9using namespace std;const int maxn = 250;bool vis[maxn];int dis[maxn], d[maxn][maxn];int n, T = 0;struct node{int x, y;}p[maxn];void Dijkstra(){memset(vis, false, sizeof vis);for(int i = 1;i<=n;i++)dis[i] = d[i][1];vis[1] = true;for(int i = 1;i<=n;i++){int k = -1;int minn = inf;for(int j = 1;j<=n;j++){if(!vis[j] && minn >= dis[j]){k = j;minn = dis[j];}}if(k == -1)break;vis[k] = true;for(int j = 1;j<=n;j++){if(!vis[j]){int t = max(dis[k], d[k][j]);dis[j] = min(dis[j], t);}}}}int main(){while(~scanf("%d", &n)){if(n == 0)break;for(int i = 1;i<=n;i++)scanf("%d%d", &p[i].x, &p[i].y);for(int i = 1;i<=n;i++){int x1 = p[i].x, y1 = p[i].y;for(int j = 1;j<=n;j++){int x2 = p[j].x, y2 = p[j].y;d[i][j] = (x1-x2)*(x1-x2) + (y1-y2)*(y1-y2);}d[i][i] = 0;}Dijkstra();float ans = sqrt(1.0*dis[2]);printf("Scenario #%d\n", ++T);printf("Frog Distance = %.3f\n\n", ans);}return 0;}
0 0
- POJ 2253 —— Frogger
- POJ—2253(Frogger)
- POJ 2553——Frogger
- poj 2253 - Frogger --- SPFA
- poj 2253 - Frogger --- dijkstra
- POJ 2253 Frogger
- poj 2253 Frogger
- poj 2253 Frogger
- poj 2253 Frogger
- POJ 2253 Frogger Floyd
- poj 2253 : Frogger (dijkstra)
- Poj 2253 Frogger
- POJ 2253 Frogger
- poj 2253 Frogger
- poj 2253 Frogger
- poj 2253 Frogger
- poj 2253 Frogger
- poj-2253-Frogger
- Eclipse打开Package Explorer
- centos7/rhel7设置笔记本触摸版
- 最短路径floyd算法
- 关于iwpriv :no private ioctls 的问题
- Android之LayoutParams的用法
- POJ 2253 —— Frogger
- java 8 默认方法和多继承
- MacDown 编辑器 使用
- Java程序员使用的20几个大数据工具
- Android流量监控类 trafficstats
- 乐观锁和悲观锁的区别
- 测试0131
- 101. 支付
- Ubuntu下安装YouCompleteMe插件