POJ 2253 Frogger(最短路变形)
2012-11-27 15:05
477 查看
题目链接
这个题就是找到1 到 2之间的路径上所有经过路的最大值中的最小值。。。有点绕,反正就是最短路的变形。。。没太想清楚怎么写,写了spfa和floyd都错了,没想清楚怎么变形啊。。。
一个地方想错了。。。改了都过了。。
这个题就是找到1 到 2之间的路径上所有经过路的最大值中的最小值。。。有点绕,反正就是最短路的变形。。。没太想清楚怎么写,写了spfa和floyd都错了,没想清楚怎么变形啊。。。
一个地方想错了。。。改了都过了。。
#include <cstdio>//spfa算法 #include <cstring> #include <cmath> #include <queue> using namespace std; #define INF 0x3f3f3f3f #define eps 1e-7 double dp[201][201],d[201]; int x[201],y[201],n; double judge(int i,int j) { return sqrt((x[i]-x[j])*(x[i]-x[j])*1.0+(y[i]-y[j])*(y[i]-y[j])*1.0); } void spfa() { int u,i; int in[201]; queue<int> que; memset(in,0,sizeof(in)); for(i = 1;i <= n;i ++) { d[i] = INF; } d[1] = 0; que.push(1); in[1] = 1; while(!que.empty()) { u = que.front(); que.pop(); in[u] = 0; for(i = 1;i <= n;i ++) { if(d[i] > max(d[u],dp[u][i])) { d[i] = max(d[u],dp[u][i]); if(!in[i]) { in[i] = 1; que.push(i); } } } } } int main() { int i,j,cas = 0; while(scanf("%d",&n)!=EOF) { cas ++; if(n == 0) break; for(i = 1;i <= n;i ++) scanf("%d%d",&x[i],&y[i]); for(i = 1;i <= n;i ++) { for(j = 1;j <= n;j ++) dp[i][j] = judge(i,j); } spfa(); printf("Scenario #%d\nFrog Distance = ",cas); printf("%.3lf\n\n",d[2]); } return 0; }
#include <cstdio>//floyd算法 #include <cstring> #include <cmath> #include <queue> using namespace std; #define INF 0x3f3f3f3f #define eps 1e-7 double dp[201][201]; int x[201],y[201],n; double judge(int i,int j) { return sqrt((x[i]-x[j])*(x[i]-x[j])*1.0+(y[i]-y[j])*(y[i]-y[j])*1.0); } int main() { int i,j,k,cas = 0; while(scanf("%d",&n)!=EOF) { cas ++; if(n == 0) break; for(i = 1;i <= n;i ++) scanf("%d%d",&x[i],&y[i]); for(i = 1;i <= n;i ++) { for(j = 1;j <= n;j ++) dp[i][j] = judge(i,j); } for(i = 1;i <= n;i ++) { for(j = 1;j <= n;j ++) { for(k = 1;k <= n;k ++) { if(dp[j][k] > max(dp[j][i],dp[i][k])&&i != j&&j != k&&i != k) { dp[j][k] = max(dp[j][i],dp[i][k]); } } } } printf("Scenario #%d\nFrog Distance = ",cas); printf("%.3lf\n\n",dp[1][2]); } return 0; }
相关文章推荐
- POJ 2253 Frogger -- 最短路变形
- POJ 2253 Frogger(最短路变形,floyd算法)
- POJ 2253 Frogger(最短路的变形)
- Floyd-Warshall算法(求解任意两点间的最短路) 详解 + 变形 之 poj 2253 Frogger
- POJ 2253 Frogger (最小生成树 or 最短路变形)
- POJ 2253 Frogger -- 最短路变形
- Frogger POJ - 2253 最短路变形 Bellman-Ford
- POJ 2253 Frogger 最短路-Dijkstra的变形形式
- Frogger POJ - 2253(Floyd最短路变形)
- POJ 2253 Frogger 最短路-Dijkstra的变形形式
- POJ 题目2253 Frogger(最短路变形)
- POJ 2253 Frogger【最短路变形——路径上最小的最大权】
- POJ 2253 Frogger【最短路变形——路径上最小的最大权】
- POJ 2253 Frogger(最短路--floyd变形)
- POJ 2253Frogger(dijk最短路变形)
- POJ 2253 Frogger(最短路变形)
- POJ -- 2253 -- Frogger (最短路变形)
- Poj 2253 Frogger (最短路变形 dijkstra)
- POJ2253---Frogger(最短路变形)
- POJ 1797 Heavy Transportation&&POJ 2253 Frogger 最短路 dijkstra变形