最短路径问题平面上有n个点(n<=100),每个点的坐标均在-10000~10000之间。其中的一些点之间有连线。若有连线,则表示可从一个点到达另一个点,即两点间有通路,通路的距离为两点间的直线距离。
来源:互联网 发布:漂亮的登录界面源码 编辑:程序博客网 时间:2024/05/16 12:34
最短路径问题
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic
Problem Description
平面上有n个点(n<=100),每个点的坐标均在-10000~10000之间。其中的一些点之间有连线。若有连线,则表示可从一个点到达另一个点,即两点间有通路,通路的距离为两点间的直线距离。现在的任务是找出从一点到另一点之间的最短距离。
Input
第1行为整数n。
第2行到第n+1行(共n行),每行两个整数x和y,描述了一个点的坐标(以一个空格分隔)。
第n+2行为一个整数m,表示图中连线的个数。
此后的m行,每行描述一条连线,由两个整数i和j组成,表示第1个点和第j个点之间有连线。
最后一行:两个整数s和t,分别表示源点和目标点。
第2行到第n+1行(共n行),每行两个整数x和y,描述了一个点的坐标(以一个空格分隔)。
第n+2行为一个整数m,表示图中连线的个数。
此后的m行,每行描述一条连线,由两个整数i和j组成,表示第1个点和第j个点之间有连线。
最后一行:两个整数s和t,分别表示源点和目标点。
Output
仅1行,一个实数(保留两位小数),表示从s到t的最短路径长度。
Example Input
50 02 02 20 23 151 21 31 42 53 51 5
Example Output
3.41
Hint
Author
#include <iostream>
#include<stdio.h>#include<math.h>
#include<string.h>
#include<algorithm>
struct node
{
int x,y;
}point[110];
int i,j,m,n;
using namespace std;
double map[601][601];
int Max=10000000;
int fld(int n)
{
int i,j,k;
for(k=1;k<=n;k++)
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(map[i][j]>map[i][k]+map[k][j])
map[i][j]=map[i][k]+map[k][j];
}
}
}
}
double di(int aa,int bb)
{
int x=point[aa].x-point[bb].x;
int y=point[aa].y-point[bb].y;
return sqrt(x*x+y*y);
}
int main()
{
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d%d",&point[i].x,&point[i].y);
}
scanf("%d",&m);
int aa,bb;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
map[i][j]=map[j][i]=Max;
}
map[i][i]=0;
}
for(i=1;i<=m;i++)
{
scanf("%d%d",&aa,&bb);
if(map[aa][bb]>di(aa,bb))
map[aa][bb]=di(aa,bb);
map[bb][aa]=di(aa,bb);
}
int qq,ww;
fld(n);
scanf("%d%d",&qq,&ww);
printf("%.2lf\n",map[qq][ww]);
}
0 0
- 最短路径问题平面上有n个点(n<=100),每个点的坐标均在-10000~10000之间。其中的一些点之间有连线。若有连线,则表示可从一个点到达另一个点,即两点间有通路,通路的距离为两点间的直线距离。
- [算法] 已知在平面坐标系内有N个点,求离开给定坐标距离最近的10个点
- swing 两点之间直线上的任意距离点的坐标
- (阶段四1.4)LA 3708 Graveyard(一个圆圈上有n个点,新加入m个点,求每个点的最小移动距离)
- 已知两点坐标,求直线方程、距离其中一点距离为L的某点
- 给定一个平面内三个不同的点p1、p2和p3,求出任意两点(即点p1和点p2、点p1和点p3、点p2和点p3)之间的距离。
- 设计平面坐标点类,计算两点之间距离、到原点距离、关于坐标轴和原点的对称点等
- [Google] 平面上有很多点( x,y均为整数) ,求一个点 ,使该点到 所有点的 曼哈顿距离和 最小
- 有N个点求一条直线使得所有点到直线的距离和最小的算法
- 距离小于一定数值的点之间连线
- 【任务3】设计平面坐标点类,计算两点之间距离、到原点距离、关于坐标轴和原点的对称点等
- 《C++第六周实验报告3-1》---设计平面坐标点类,计算两点之间距离、到原点距离、关于坐标轴和原点的对称点等
- 第六周任务三设计平面坐标点类,计算两点之间距离、到原点距离、关于坐标轴和原点的对称点等
- C++第六周任务三设计平面坐标点类,计算两点之间距离、到原点距离、关于坐标轴和原点的对称点等
- 获得两点之间的所有路径点
- 【一道数学题】从(0,0)点经过(x,y)点到达(a,b)点的最短路径有多少条
- 给定平面上的N个点,寻找距离最远的两个点
- 给定平面上的N个点,寻找距离最远的两个点
- BZOJ 1001 [BeiJing2006]狼抓兔子 最短路
- 使用ajax编写异步查询
- Android快速发布项目到jcenter
- 计算机网络
- linux搭建网桥
- 最短路径问题平面上有n个点(n<=100),每个点的坐标均在-10000~10000之间。其中的一些点之间有连线。若有连线,则表示可从一个点到达另一个点,即两点间有通路,通路的距离为两点间的直线距离。
- 备忘录模式
- 09 事件驱动的OSAL简要分析
- 跳转到微信公众号主页,关注页面
- 各NoSQL数据库管理系统与模型比较
- Java字符串(三)--正则表达式
- 数据结构实验之队列一:排队买饭
- 2014年北理复试上机题
- CountDownLatch使用