Frogger POJ - 2253

版权声明: https://blog.csdn.net/weixin_40959045/article/details/79448549

题意: 求Freedy到Fiona的路径中边权最小值

解法一:

floyd  92ms 最短路的变形

注意 d[i][j] = min(d[i][j],max(d[i][k],d[k][j])); 

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
#define MAXV 205
double d[MAXV][MAXV];
int V;
double x[MAXV],y[MAXV];
void dist(int i,int j){
  d[i][j] = d[j][i] = sqrt((x[i]-x[j]) * (x[i]-x[j]) +(y[i]-y[j]) * (y[i]-y[j]));
}
void floyd_warshall(){
  for (int k = 0;k<V;k++)
    for (int i = 0;i<V;i++)
      for(int j = 0;j<V;j++) d[i][j] = min(d[i][j],max(d[i][k],d[k][j]));
  //不妨视为最短路的变形 题目已保证点联通 未避免环求最短路的最小
  //令d视为从i到j的路中经过路权最大值
}

int main()
{
  int t = 1;
  while (scanf("%d",&V) != EOF && V != 0){
    for (int i = 0;i<V;i++){
      scanf("%lf%lf",&x[i],&y[i]);
    }
    for (int i = 0;i<V;i++){
      for (int j = 0;j<V;j++)
        dist(i,j);
    }
    floyd_warshall();
    printf("Scenario #%d\nFrog Distance = %.3lf\n\n",t,d[0][1]);
    t++;
  }
    return 0;
}

解法二:

dijkstra 0ms

思路与上述相同

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
#define MAX_V 205
#define INF 1<<28
double cost[MAX_V][MAX_V];
double d[MAX_V];
double x[MAX_V],y[MAX_V];
void dist(int i,int j){
  cost[i][j] = cost[j][i] = sqrt((x[i]-x[j]) * (x[i]-x[j]) +(y[i]-y[j]) * (y[i]-y[j]));
}
bool used[MAX_V];
int V;
void dijkstra(int s){
  fill(d,d+V,INF);
  fill(used,used+V,false);
  d[s] = 0;

  while (true){
    int v = -1;
    for (int u = 0;u<V;u++){
      if (!used[u] && (v == -1 || d[u] < d[v])) v = u;//注意初始时仅原点不为INF
    }
    if (v == -1) break;
    used[v] = true;

    for (int u = 0;u<V;u++){
      d[u] = min(d[u],max(d[v],cost[v][u]));
    }
  }
}


int main()
{
  int t = 1;
  while (scanf("%d",&V) != EOF && V != 0){
    for (int i = 0;i<V;i++){
      scanf("%lf%lf",&x[i],&y[i]);
    }
    for (int i = 0;i<V;i++){
      for (int j = 0;j<V;j++)
        dist(i,j);
    }
    dijkstra(0);
    printf("Scenario #%d\nFrog Distance = %.3lf\n\n",t,d[1]);
    t++;
  }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_40959045/article/details/79448549
今日推荐