P1744 采购特价商品 题解(讲解图论)
图论的超级初级题目(模板题)
最短路径的模板题
图是啥?(白纸上的符号?)
对于一个拥有n个顶点的无向连通图,它的边数一定多于n-1条。若从中选择n-1条边,使得无向图仍然连通,则由n个顶点及这 n-1条边(弧)组成的图被称为原无向图的生成树。
换句话说,有边有点就是图。(本蒟蒻的理解是这样。。QWQ)
另外,还有一些与图有关的定义(很好理解,通俗一点):
阶:图中点的个数。
边:两个点间的连接
权值:边的长度
。。。想了解更多找度娘,她可能讲的比我通俗QWQ。
邻接矩阵:
进入正题:
题目背景
《爱与愁的故事第三弹·shopping》第一章。
题目描述
中山路店山店海,成了购物狂爱与愁大神的“不归之路”。中山路上有n(n<=100)家店,每家店的坐标均在-10000~10000之间。其中的m家店之间有通路。若有通路,则表示可以从一家店走到另一家店,通路的距离为两点间的直线距离。现在爱与愁大神要找出从一家店到另一家店之间的最短距离。你能帮爱与愁大神算出吗?
输入输出格式
输入格式:
共n+m+3行:
第1行:整数n
第2行~第n+1行:每行两个整数x和y,描述了一家店的坐标
第n+2行:整数m
第n+3行~第n+m+2行:每行描述一条通路,由两个整数i和j组成,表示第i家店和第j家店之间有通路。
第n+m+3行:两个整数s和t,分别表示原点和目标店
输出格式:
仅一行:一个实数(保留两位小数),表示从s到t的最短路径长度。
输入输出样例
说明
100%数据:n<=100,m<=1000
先预处理转化为邻接矩阵后再直接输出就可以了
具体算法为Floyd算法
上AC代码:
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
using namespace std;
int n,m,a[][],e,g,aa,bb;//a用来存x,y坐标
double f[][];//f用来存路径的
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++)
cin>>a[i][]>>a[i][]; //scanf("%d%d",&a[i][0],&a[i][1]);
scanf("%d",&m);
memset(f,0x7f,sizeof(f));
for(int i=;i<=m;i++)
{
scanf("%d%d",&e,&g);//代替x,y ,因为cmath中有x,y了(真的很无语啊)
f[g][e]=sqrt(pow(double(a[e][]-a[g][]),)+pow(double(a[e][]-a[g][]),));
f[e][g]=sqrt(pow(double(a[e][]-a[g][]),)+pow(double(a[e][]-a[g][]),));
}
scanf("%d%d",&aa,&bb);
for(int k=;k<=n;k++)//开启O(n^3)暴力模式——
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
if((i!=j)&&(i!=k)&&(j!=k)&&(f[i][j]>(f[i][k]+f[k][j])))
f[i][j]=f[i][k]+f[k][j];
}
printf("%0.2lf",f[aa][bb]);//暴力过后松一口气,直接输出您想要的点就行了
return ;
}
完结✿ヽ(°▽°)ノ✿
希望对大家有所帮助
P1744 采购特价商品 题解(讲解图论)的更多相关文章
- P1744 采购特价商品 最短路径
P1744 采购特价商品 图论-----最短路径算法 弗洛伊德算法 O(n^3) 代码: #include<iostream> #include<cstdio> #inclu ...
- 洛谷——P1744 采购特价商品
P1744 采购特价商品 题目背景 <爱与愁的故事第三弹·shopping>第一章. 题目描述 中山路店山店海,成了购物狂爱与愁大神的“不归之路”.中山路上有n(n<=100)家店, ...
- P1744 采购特价商品
原题链接 https://www.luogu.org/problemnew/show/P1744 一道最短路的模板题.....很简单吧 求最短路的方法有很多,但是对于刚学完Floyd的我,只会用这个. ...
- luogu P1744 采购特价商品
实话说我本来想找SPFA的题,结果我硬生生的把这道题做成了Floyd 先来看题,我们会发现如果把他所给的变量都输入,那么会发现用Floyd的解法,输入占了main函数的一半长度... 题目分为两步走: ...
- 洛谷 P1744 采购特价商品
题目背景 <爱与愁的故事第三弹·shopping>第一章. 题目描述 中山路店山店海,成了购物狂爱与愁大神的“不归之路”.中山路上有n(n<=100)家店,每家店的坐标均在-1000 ...
- 洛谷题解 P1744 【采购特价商品】
原题传送门 题目描述 中山路店山店海,成了购物狂爱与愁大神的"不归之路".中山路上有n(n<=100)家店,每家店的坐标均在-10000~10000之间.其中的m家店之间有通 ...
- 洛谷P3502 [POI2010]CHO-Hamsters感想及题解(图论+字符串+矩阵加速$dp\&Floyd$)
洛谷P3502 [POI2010]CHO-Hamsters感想及题解(图论+字符串+矩阵加速\(dp\&Floyd\)) 标签:题解 阅读体验:https://zybuluo.com/Junl ...
- 图论++【洛谷p1744】特价采购商品&&【一本通1342】最短路径问题
(虽然题面不是很一样,但是其实是一个题qwq) [传送门] 算法标签: 利用Floyed的o(n3)算法: (讲白了就是暴算qwq) 从任意一条单边路径开始.所有两点之间的距离是边的权,或者无穷大,如 ...
- Floyd-蒟蒻也能看懂的弗洛伊德算法(当然我是蒟蒻)
今天来讲点图论的知识,来看看最短路径的一个求法(所有的求法我以后会写,也有可能咕咕咕) 你们都说图看着没意思不好看,那今天就来点情景 暑假,_GC准备去一些城市旅游.有些城市之 ...
随机推荐
- HBase Region合并分析
1.概述 HBase中表的基本单位是Region,日常在调用HBase API操作一个表时,交互的数据也会以Region的形式进行呈现.一个表可以有若干个Region,今天笔者就来和大家分享一下Reg ...
- gcc编译基本用法~2
编译简单的 C 程序 C 语言经典的入门例子是 Hello World,下面是一示例代码: ;} 我们假定该代码存为文件‘hello.c’.要用 gcc 编译该文件,使用下面的命令: $ gcc -g ...
- 解决端口冲突问题(查询端口占用进程并kill)
1. 查看端口占用 在windows命令行窗口下执行: netstat -aon|findstr "8080" TCP 127.0.0.1:80 0.0.0.0:0 LISTENI ...
- Java GUI 单机版五子棋
前言 刚开始学java时接触到GUI,一时兴起写了个五子棋,五子棋的关键点在于判断输赢,其他的都没什么,现在翻出来整理并记录下来,不足之处还望各位路过的大佬多多指教. 代码实现 代码不多,四百多行,全 ...
- webpack4.0各个击破(5)—— Module篇
webpack4.0各个击破(5)-- Module篇 webpack作为前端最火的构建工具,是前端自动化工具链最重要的部分,使用门槛较高.本系列是笔者自己的学习记录,比较基础,希望通过问题 + 解决 ...
- JDK源码分析(四)—— ConcurrentHashMap
一.概述 ConcurrentHashMap是Java5中新增加的一个线程安全的Map集合,可以用来替代HashTable. 锁分段技术 原理:将数据分成一段一段的存储,然后给每一段数据配一把锁,当一 ...
- Elasticsearch.net项目实战
elasticsearch.net项目实战 目录 Elasticsearch+kibana 环境搭建 windows 10环境配置 安装Elasticsearch head安装(非必需) 安装kiba ...
- Python 面向对象之反射
Python 面向对象之反射 TOC 什么是反射? hasattr getattr setattr delattr 哪些对象可以使用反射 反射的好处 例子一 例子二 什么是反射? 程序可以访问.检查和 ...
- Android Camera2 预览功能实现
1. 概述 最近在做一些关于人脸识别的项目,需要用到 Android 相机的预览功能.网上查阅相关资料后,发现 Android 5.0 及以后的版本中,原有的 Camera API 已经被 Camer ...
- SCSS 在项目中的运用
最后一段时间一直在做一些网站或是CMS的项目,想用bootstrap,但是,设计那哥们说了,用什么都行,就不能用bootstrap,我去了个..... 无语中,逼着自己写.说实话,就是用bootstr ...