• poj2253 Frogger dijkstra


    题目大意:

    给出n个岛的坐标,前两个坐标分别为A青蛙和B青蛙所在岛的坐标,A青蛙想到达B青蛙所在的岛,A可以从某一个岛跳到任意其它一个岛上,则A到B的每条路径都有一个跳的最远的距离Xi,求这些最远距离中的最小值。

    用dijkstra解决,其中dist[J]为起点到J的所有路径中最长边的最小值。

     1 #include <iostream>
     2 #include <stdio.h>
     3 #include <math.h>
     4 #include <algorithm>
     5 using namespace std;
     6 
     7 int n, visit[200];
     8 double x[200], y[200];
     9 double G[200][200];
    10 double dist[200];
    11 const int inf = 2000;
    12 
    13 void dijkstra() {
    14     fill(visit, visit + n, 0);
    15     fill(dist, dist + n, inf);
    16     dist[0] = 0;
    17     for (int i = 0; i < n; i++) {
    18         int minn = inf, v;
    19         for (int j = 0; j < n; j++) {
    20             if (!visit[j] && dist[j] < minn) {
    21                 minn = dist[j];
    22                 v = j;
    23             }
    24         }
    25         visit[v] = 1;
    26         if (v == 1)
    27             break;
    28         for (int j = 0; j < n; j++) {
    29             if (!visit[j])
    30                 dist[j] = min(dist[j], max(dist[v], G[v][j]));
    31         }
    32     }
    33 }
    34 
    35 int main() {
    36     int cnt = 0;
    37     while (true) {
    38         cin >> n;
    39         if (n == 0)
    40             break;
    41         for (int i = 0; i < n; i++)
    42             cin >> x[i] >> y[i];
    43         for (int i = 0; i < n; i++) {
    44             for (int j = 0; j < n; j++)
    45                 G[i][j] = sqrt((x[i] - x[j]) * (x[i] - x[j]) + (y[i] - y[j]) * (y[i] - y[j]));
    46         }
    47         dijkstra();
    48         printf("Scenario #%d
    ", ++cnt);
    49         printf("Frog Distance = %.3lf
    
    ", dist[1]);
    50     }
    51     return 0;
    52 }
  • 相关阅读:
    计蒜客 跳跃游戏2
    计蒜客 跳跃游戏
    2018 计蒜之道-初赛 第一场 A-百度无人车
    poj 3625 (最小生成树算法)
    poj 3623(贪心)
    poj2386(dfs搜索水题)
    poj 2761 主席树的应用(查询区间第k小值)
    POJ 2456 编程技巧之------二分查找思想的巧妙应用
    POJ 1995(有关快速幂运算的一道水题)
    1441:【例题2】生日蛋糕
  • 原文地址:https://www.cnblogs.com/lxc1910/p/10544484.html
Copyright © 2020-2023  润新知