题目描述 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

数据范围及提示 Data Size & Hint

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 #include<cstring>
 5 using namespace std;
 6 struct node
 7 {
 8     double x;
 9     double y;
10     double cd;
11 }a[1001];
12 double map[101][101];
13 double maxn=127;
14 int main()
15 {
16     memset(map,maxn,sizeof(map));
17     int n;
18     scanf("%d",&n);
19     for(int i=1;i<=n;i++)
20     {
21         scanf("%lf%lf",&a[i].x,&a[i].y);
22         //a[i].cd=sqrt((pow(abs(x),2))+(pow(abs(y),2)));
23     }
24     int m;
25     scanf("%d",&m);
26     for(int i=1;i<=m;i++)
27     {
28         int p,q;
29         scanf("%d%d",&p,&q);
30         double y=sqrt(pow(a[p].x-a[q].x,2)+pow(a[p].y-a[q].y,2));
31         map[p][q]=y;
32         map[q][p]=y;
33     }
34     for(int k=1;k<=n;k++)
35     {
36         for(int i=1;i<=n;i++)
37         {
38             for(int j=1;j<=n;j++)
39             {
40                 if(map[i][j]>map[i][k]+map[k][j])
41                 map[i][j]=map[i][k]+map[k][j];
42             }
43         }
44     }
45     int u,v;
46     scanf("%d%d",&u,&v);
47     printf("%.2lf",map[u][v]);
48     return 0;
49 }

2602 最短路径问题相关推荐

  1. Warshall算法多源点之间最短路径的算法最短距离

    简介:Floyd算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra算法类似.该算法名称以创始人之一.1978年图灵奖获得者.斯坦福大学计算机科学系 ...

  2. 贪心算法单源点最短路径例题c语言源代码,Dijkstra算法是解单源最短路径问题的一个贪心算法...

    问题描述 给定一个带权有向图 G=(V,E) ,其中每条边的权是一个非负实数. 另外,还给定 V 中的一个项点,称为源. 现在我们要计算从源到所有其他各项点的最短路径长度. 这里的长度是指路上各边权之 ...

  3. java找图最短路径_查找有向图最短路径

    老师有一个题: 使用狄克斯屈拉(Dikjstra)标号算法可得出解: 我用Java来实现了一下这个算法: package test; import java.util.ArrayList; impor ...

  4. python迷宫问题求最短路径_用栈求解迷宫问题的所有路径及最短路径程序

    目的:能将栈运用的更为熟练 实验内容:求解迷宫问题程序,要求输出如图所示的迷宫的路径,并求出第一条最短路径的长度以及最短路径. 设计的算法功能: mgpath(int xi,int yi,int xe ...

  5. Python访问街区所有节点最短路径问题,并结合matplotlib可视化

    Python访问街区所有节点最短路径问题,并结合matplotlib可视化 1. 效果图 2. 源码 2.1 5个点全排列(递归+非递归算法) 2.2 python遍历全路径计算距离+matplot可 ...

  6. 数据结构与算法(7-4)最短路径(迪杰斯特拉(Dijkstra)算法、弗洛伊德(Floyd)算法)

    目录 一.最短路径概念 二.迪杰斯特拉(Dijkstra)算法(单源最短路径) 1.原理 2.过程 3.代码 三.弗洛伊德(Floyd)算法(多源最短路径) 1.原理 2.存储 3.遍历 4.代码 参 ...

  7. oauth_client_details的值怎么添加_17.八年级数学:怎么求CDM周长的最小值?最短路径问题,经典考题...

    欢迎您来到方老师数学课堂,请点击上方蓝色字体,关注方老师数学课堂.所有的视频内容,全部免费,请大家放心关注,放心订阅. 八年级数学:怎么求△CDM周长的最小值?最短路径问题,经典考题.大家先在草稿本上 ...

  8. NYOJ——街区最短路径问题

    街区最短路径问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 一个街区有很多住户,街区的街道只能为东西.南北两种方向. 住户只可以沿着街道行走. 各个街道之间的间隔相 ...

  9. 图论-最短路径--3、SPFA算法O(kE)

    SPFA算法O(kE) 主要思想是:     初始时将起点加入队列.每次从队列中取出一个元素,并对所有与它相邻的点进行修改,若某个相邻的点修改成功,则将其入队.直到队列为空时算法结束.     这个算 ...

  10. 【算法】【ACM】深入理解Dijkstra算法(单源最短路径算法)

    Dijkstra算法是用来求解从某个源点到其他各顶点的最短路径(单源最短路径). 下面的Dijkstra算法的讲解都是基于这个有向图,在遇到其他问题可以类比. 算法的基本思想: 把图中的定点分成两组, ...

最新文章

  1. docker 启动,关闭,查看运行状态
  2. Linux vmstat命令详细解读
  3. 哲学家就餐与死锁问题,死锁产生的条件以及解决方案
  4. Java设计模式-建造者模式 理论代码相结合
  5. 【MFC系列1】之简单Win32程序
  6. Theano 更多示例
  7. PHP5.3--PHP7 新特性总结
  8. Python debug —— invalid literal for int() with base 10
  9. 黑莓桌面管理器更新到5.0.1.37版本
  10. 蓝桥杯等差素数列-python
  11. php-fpm前台,php-fpm配置文件详解
  12. html svg 线条动画,HTML5 SVG图形轮廓线条绘制动画插件-vivus
  13. 植物免疫研究与抗病虫绿色防控:进展、机遇与挑战
  14. 快速排序(填坑法的两种写法以及交换法)
  15. 个人关于学习的一些总结
  16. Jenkins 打包项目出错汇总(持续)
  17. 你们公司测试都用什么工具啊?
  18. 机器人技术-HC-SR04超声波传感器数据及机器人避障的应用
  19. Codeforces Round #649 D. Ehab‘s Last Corollary 【思维,二分图,环】
  20. viewFlipper的基本实现

热门文章

  1. mybaties中的selectKey和useGeneratedKeys=true
  2. spoolqa果然是病毒!
  3. nginx负载均衡fair模块安装和配置
  4. mybatis insert 如何返回主键
  5. CSS DIV HOVER
  6. Android 4.0.4模拟器安装完全教程(图文)
  7. 使用Eclipse创建的第一个javabean,cannot resolved to a type
  8. ascll编码表图片_ASCII码一览表,ASCII码对照表
  9. 机器学习实战1-1 KNN电影分类遇到的问题
  10. 泛微发布亿元补贴计划,推动移动办公普及