POJ 2253 Frogger -- 最短路变形
2014-03-16 22:35
429 查看
这题的坑点在POJ输出double不能用%.lf而要用%.f。。。真是神坑。
题意:给出一个无向图,求节点1到2之间的最大边的边权的最小值。
算法:Dijkstra
题目每次选择权值最小的边进行延伸访问,最坏情况下每条路径都要访问,复杂度O(n^2)
代码:
View Code
题意:给出一个无向图,求节点1到2之间的最大边的边权的最小值。
算法:Dijkstra
题目每次选择权值最小的边进行延伸访问,最坏情况下每条路径都要访问,复杂度O(n^2)
代码:
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #define Mod 1000000007 using namespace std; #define N 207 struct point { int x,y; }p ; int n; double res,mini; double way ,d ; int vis ; void Dijastra() { int i,j,k; for(i=1;i<=n;i++) d[i] = Mod; d[1] = 0; memset(vis,0,sizeof(vis)); for(i=1;i<=n;i++) { mini = Mod; for(j=1;j<=n;j++) { if(!vis[j] && d[j] <= mini) { k = j; mini = d[j]; } } vis[k] = 1; if(res < d[k] && d[k] != Mod) res = d[k]; if(k == 2) return; for(j=1;j<=n;j++) { if(!vis[j]) d[j] = min(d[j],way[k][j]); } } } double dis(point ka,point kb) { return sqrt((ka.x-kb.x)*(ka.x-kb.x)+(ka.y-kb.y)*(ka.y-kb.y)); } int main() { int cs = 1,i,j; while(scanf("%d",&n)!=EOF && n) { for(i=1;i<=n;i++) scanf("%d%d",&p[i].x,&p[i].y); for(i=1;i<=n;i++) { for(j=i;j<=n;j++) { way[i][j] = way[j][i] = dis(p[i],p[j]); } way[i][i] = 0; } res = 0; Dijastra(); printf("Scenario #%d\n",cs++); printf("Frog Distance = %.3f\n\n",res); // %.3f } return 0; }
View Code
相关文章推荐
- POJ 1797 Heavy Transportation&&POJ 2253 Frogger 最短路 dijkstra变形
- 最短路变形 POJ 2253 Frogger
- POJ 2253 Frogger -- 最短路变形
- POJ 2253 Frogger(最短路变形,floyd算法)
- POJ 2253 Frogger(最短路的变形)
- Floyd-Warshall算法(求解任意两点间的最短路) 详解 + 变形 之 poj 2253 Frogger
- POJ 2253 Frogger (最小生成树 or 最短路变形)
- Frogger POJ - 2253 最短路变形 Bellman-Ford
- Frogger POJ - 2253(Floyd最短路变形)
- POJ 2253 Frogger 最短路-Dijkstra的变形形式
- POJ 题目2253 Frogger(最短路变形)
- POJ 2253 Frogger 最短路-Dijkstra的变形形式
- POJ 2253 Frogger【最短路变形——路径上最小的最大权】
- POJ 2253 Frogger(最短路--floyd变形)
- POJ 2253Frogger(dijk最短路变形)
- POJ 2253 Frogger(最短路变形)
- POJ 2253 Frogger【最短路变形——路径上最小的最大权】
- POJ -- 2253 -- Frogger (最短路变形)
- POJ 2253 Frogger(最短路变形)
- Poj 2253 Frogger (最短路变形 dijkstra)