• code vs 2602 最短路径问题


    题目描述 Description

    平面上有n个点(n<=100),每个点的坐标均在-10000~10000之间。其中的一些点之间有连线。若有连线,则表示可从一个点到达另一个点,即两点间有通路,通路的距离为两点间的直线距离。现在的任务是找出从一点到另一点之间的最短路径。

    输入描述 Input Description

    第一行为整数n。

    第2行到第n+1行(共n行),每行两个整数x和y,描述了一个点的坐标。

        第n+2行为一个整数m,表示图中连线的个数。

        此后的m行,每行描述一条连线,由两个整数i和j组成,表示第i个点和第j个点之间有连线。

        最后一行:两个整数s和t,分别表示源点和目标点。

    输出描述 Output Description

    仅一行,一个实数(保留两位小数),表示从s到t的最短路径长度。

    样例输入 Sample Input

    5

    0 0

    2 0

    2 2

    0 2

    3 1

    5

    1 2

    1 3

    1 4

    2 5

    3 5

    1 5

    样例输出 Sample Output

    3.41

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 #include<cstring>
     5 using namespace std;
     6 double maps[101][101];
     7 double maxn=127;
     8 struct node{
     9     double x;
    10     double y;
    11  12 }saber[1001];
    13 int main()
    14 {
    15     memset(maps,maxn,sizeof(maps));
    16     int m;
    17     int n;
    18     scanf("%d",&n);
    19     for(int i=1;i<=n;i++)
    20     {
    21         scanf("%lf%lf",&saber[i].x,&saber[i].y);
    22     }
    23     cin>>m;
    24     int x,y;
    25     for(int i=1;i<=m;i++)
    26     {
    27         cin>>x>>y;
    28         maps[x][y]=maps[y][x]=sqrt(pow(saber[x].x-saber[y].x,2)+pow(saber[x].y-saber[y].y,2)); 
    29     }
    30     for(int k=1; k<=n; k++)
    31         for(int i=1; i<=n; i++)
    32             for(int j=1; j<=n; j++)
    33                 if((i!=j)&&(j!=k)&&(k!=i)&&(maps[i][k]+maps[k][j]<maps[i][j]))
    34                     maps[i][j]=maps[i][k]+maps[k][j];
    35     int st,en;
    36     cin>>st>>en;
    37     printf("%.2lf",maps[st][en]);
    38     return 0;
    39 }
  • 相关阅读:
    [页面布局方式]
    padding and margin
    【浏览器中的页面】
    【浏览器的页面循环系统】
    Activity启动模式详解(二)--->singleTask
    finish、onDestory、System.exit的区别
    Androidndk开发打包时我们应该如何注意平台的兼容(x86,arm,arm-v7a)
    关于WifiManager的一些看法
    高效的找出两个List中的不同元素
    关于Activity的生命周期
  • 原文地址:https://www.cnblogs.com/sssy/p/6686378.html
Copyright © 2020-2023  润新知