• poj2502


    最短路

    View Code
    #include <iostream>
    #include <cstdlib>
    #include <cstring>
    #include <cstdio>
    #include <cmath>
    using namespace std;

    #define maxn 205

    struct Point
    {
    double x, y;
    }point[maxn];

    double map[maxn][maxn];
    double subv, walkv;
    int n;

    double dist(Point &a, Point &b)
    {
    Point p;
    p.x = a.x - b.x;
    p.y = a.y - b.y;
    return sqrt(p.x * p.x + p.y * p.y);
    }

    void input()
    {
    for (int i = 0; i < 2; i++)
    scanf("%lf%lf", &point[i].x, &point[i].y);
    n = 2;
    Point last, now;
    last.x = last.y = -1;
    while (~scanf("%lf%lf", &now.x, &now.y))
    {
    if (!(now.x == -1 && now.y == -1))
    {
    point[n++] = now;
    if (!(last.x == -1 && last.y == -1))
    map[n - 1][n - 2] = map[n - 2][n - 1] = dist(point[n - 1], point[n - 2]) / subv;
    }
    last = now;
    }
    for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++)
    if (map[i][j] == -1)
    map[i][j] = dist(point[i], point[j]) / walkv;
    }

    void floyd()
    {
    for (int k = 0; k < n; k++)
    for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++)
    map[i][j] = min(map[i][j], map[i][k] + map[k][j]);
    }

    int main()
    {
    //freopen("t.txt", "r", stdin);
    for (int i = 0; i < maxn; i++)
    for (int j = 0; j < maxn; j++)
    map[i][j] = -1;
    subv = 40 * 1000.0 / 60;
    walkv = 10 * 1000.0 / 60;
    input();
    floyd();
    printf("%.0f\n", map[0][1]);
    return 0;
    }

  • 相关阅读:
    连载一:RobotFramework+SeleniumWebdriver+RIDE的安装
    一个小小黑点乱了我的芳心
    JDK的环境配置
    Eclipse中安装TestNG插件
    RobotFramework的安装
    导入现有java工程
    eclipse创建项目(步骤加图片)
    java--算术运算符
    java--数据类型
    java程序结构--day01
  • 原文地址:https://www.cnblogs.com/rainydays/p/2198261.html
Copyright © 2020-2023  润新知