博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ssl1613-最短路径问题【图论,最短路径(还不明显?)】
阅读量:4573 次
发布时间:2019-06-08

本文共 1173 字,大约阅读时间需要 3 分钟。

题目

一个图,求两个点的最短路径

输入

第一行为一个整数n。

n行,两个整数x和y,一个点的坐标
一个整数m,表示图中线的个数。
m行,一条线,i,j,表示第i个点和第j个点之间有线。
最后一行:两个整数s和t,分别表示源点和目标点。
5
0 0
2 0
2 2
0 2
3 1
5
1 2
1 3
1 4
2 5
3 5
1 5

输出

最短路(保留两位小数)

3.41


解题思路

沟谷求路径长度,然后最短路,这里用O(n^3)的方法(Floyd法)


代码

#include
#include
#include
using namespace std;int n,dxx,dyy,m;int xx[101],yy[101];double a[101][101];int main(){ scanf("%d",&n); for (int i=1;i<=n;i++) { scanf("%d%d",&xx[i],&yy[i]);//输入 } for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) a[i][j]=233333333; //初始化 scanf("%d",&m); for (int i=1;i<=m;i++) { scanf("%d%d",&dxx,&dyy); a[dxx][dyy]=sqrt(abs(xx[dxx]-xx[dyy])*abs(xx[dxx]-xx[dyy])+abs(yy[dxx]-yy[dyy])*abs(yy[dxx]-yy[dyy])); a[dyy][dxx]=sqrt(abs(xx[dxx]-xx[dyy])*abs(xx[dxx]-xx[dyy])+abs(yy[dxx]-yy[dyy])*abs(yy[dxx]-yy[dyy])); //求距离(沟谷) } scanf("%d%d",&dxx,&dyy);//点 for (int k=1;k<=n;k++)//枚举一个中点 for (int i=1;i<=n;i++) for(int j=1;j<=n;j++) a[i][j]=min(a[i][j],a[i][k]+a[k][j]); //经过中点k从i到j printf("%.2lf",a[dxx][dyy]);//输出}

转载于:https://www.cnblogs.com/sslwyc/p/9218620.html

你可能感兴趣的文章
nginx安装环境
查看>>
Adventures with Testing BI/DW Application
查看>>
XML
查看>>
Flash Builder4注册机
查看>>
如何让程序(如java Hello)只启动一次?
查看>>
rpath 与runpath
查看>>
WPF星空效果
查看>>
SQL语言基础-基本概念
查看>>
用迭代创建级联目录
查看>>
Docker安装Nginx
查看>>
Usenet:P2P下载的替代方法
查看>>
POJ 2155 Matrix (D区段树)
查看>>
andorid简易定位
查看>>
前端基础标签
查看>>
PHP常见的加密算法
查看>>
react-navigation 简介
查看>>
参数化查询与sqlparameter类的使用
查看>>
拷贝,集合,函数,enumerate,内置函数
查看>>
2018-6-4-Python全栈开发day13-14-集合与函数
查看>>
Nginx与Tomcat集成
查看>>