poj2253 Frogger 图论,Floyd
2014-07-19 23:26
429 查看
题目链接:http://poj.org/problem?id=2253
题目大意:有两只青蛙和若干块石头,现在已知这些东西的坐标,两只青蛙A坐标和青蛙B坐标是第一个和第二个坐标,现在A青蛙想要到B青蛙那里去,并且A青蛙可以借助任意石头的跳跃。对于从A到B的每条通路,都存在一个最大边,让求这些最大边的最小的一个。
思路:Floyd算法的变形,只要变形松弛操作就可以了
题目大意:有两只青蛙和若干块石头,现在已知这些东西的坐标,两只青蛙A坐标和青蛙B坐标是第一个和第二个坐标,现在A青蛙想要到B青蛙那里去,并且A青蛙可以借助任意石头的跳跃。对于从A到B的每条通路,都存在一个最大边,让求这些最大边的最小的一个。
思路:Floyd算法的变形,只要变形松弛操作就可以了
///2014.7.19 ///poj2253 //Accepted 1080K 79MS G++ 1199B 2014-07-19 23:22:04 #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> using namespace std; int cases; int n; double dist[210][210]; int coor_x[210],coor_y[210]; void init(){ for(int i=0 ; i<n ; i++) scanf("%d%d",&coor_x[i],&coor_y[i]); for(int i=0 ; i<n ; i++){ for(int j=i+1 ; j<n ; j++){ int x = (coor_x[i]-coor_x[j])*(coor_x[i]-coor_x[j]); int y = (coor_y[i]-coor_y[j])*(coor_y[i]-coor_y[j]); dist[i][j] = dist[j][i] = sqrt(x+y); } } } void floyd(){ for(int k=0 ; k<n ; k++){ for(int i=0 ; i<n ; i++){ for(int j=0 ; j<n ; j++){ if( dist[i][k]<dist[i][j] && dist[k][j]<dist[i][j] ){ dist[i][j] = dist[j][i] = dist[i][k]>dist[k][j] ? dist[i][k]:dist[k][j]; } } } } } void output(){ cout<<"Scenario #"<<cases<<endl; printf("Frog Distance = %.3f\n\n",dist[0][1]); } int main(){ cases = 0; while( cin>>n && n ){ cases++; init(); floyd(); output(); } return 0; }
相关文章推荐
- 【图论】【poj 2253】Frogger
- 最短路(Floyd_Warshall) POJ 2253 Frogger
- POJ 2253 Frogger 图论 Dijkstra算法
- poj 2253 Frogger(floyd变形)
- POJ 2253 Frogger(Floyd)
- POJ 2253 Frogger(翻译/最短路/floyd/思维)
- (POJ 2253)Frogger 求所有可达路径中的最大边的最小值 dijkstra || floyd 变形
- POJ 2253 Frogger (floyd, 二分)
- 图论_最短路_例题_Frogger(POJ 2253)
- poj2253~Frogger(最短路floyd)
- poj 2253 Frogger floyd 长路求权值最大边,属于简单题!!!!
- POJ2253 Frogger -DIJKSTRA || FLOYD最短路练习
- POJ-2253 Frogger(Dijkstra)(Floyd)
- poj2253 Frogger(Floyd)
- POJ 2253 - Frogger (floyd)
- poj 2253 Frogger (floyd)
- Frogger poj 2253 floyd
- POJ 2253 Frogger(最短路--floyd变形)
- POJ 2253 Frogger最短路(floyd)
- POJ 2253 Frogger (Floyd 松弛操作)