HDU - 3790 最短路径问题

Description

给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的。

Input

输入n,m,点的编号是1~n,然后是m行,每行4个数 a,b,d,p,表示a和b之间有一条边,且其长度为d,花费为p。最后一行是两个数 s,t;起点s,终点。n和m为0时输入结束。 
(1<n<=1000, 0<m<100000, s != t)

Output

输出 一行有两个数, 最短距离及其花费。

Sample Input

3 2
1 2 5 6
2 3 4 5
1 3
0 0

Sample Output

9 11

代码:

#include <iostream>
#include<bits/stdc++.h>
#define maxn 1007
#define INF 1<<30
using namespace std;
int start,e;
int n,m;
int graph[maxn][maxn];
int cost[maxn][maxn];
int dist[maxn],cist[maxn],vis[maxn];
void Dijkstra(){
for(int i = 1;i <= n;i++) {
dist[i] = graph[start][i];
cist[i] = cost[start][i];
}
memset(vis,0,sizeof(vis));
vis[start] = 1;
for(int i = 1;i <= n;i++){
if(vis[e]) break;
int mindis = INF,mark;
for(int j = 1;j <= n;j++) {
if(!vis[j] &&dist[j]<mindis)
mindis = dist[mark=j];
}
vis[mark] = 1;
for(int j = 1;j <= n;j++) {
if(!vis[j]&&dist[j] > dist[mark]+graph[mark][j]) {
dist[j] = dist[mark]+graph[mark][j];
cist[j] = cist[mark]+cost[mark][j];
}
else if(!vis[j]&& dist[j] == dist[mark]+graph[mark][j])
if(cist[j] > cist[mark]+cost[mark][j])
cist[j] = cist[mark]+cost[mark][j];
} }
printf("%d %d\n",dist[e],cist[e]);
} int main(){
while(scanf("%d%d",&n,&m) && n+m){
for(int i = 1;i <= n;i++)
for(int j = 1;j <= n;j++) {
graph[i][j] = i==j?0:INF;
cost[i][j] = i==j?0:INF;
}
int a,b,d,p;
for(int i = 1;i <= m;i++){
scanf("%d%d%d%d",&a,&b,&d,&p);
if(graph[a][b]>d){
graph[a][b]=graph[b][a]=d;
cost[a][b]=cost[b][a]=p;
}
else if(graph[a][b]==d){
if(cost[a][b]>p)
cost[a][b]=cost[b][a]=p;
}
}
scanf("%d%d",&start,&e);
Dijkstra();
}
return 0;
}

HDU - 3790 最短路径问题 (dijkstra算法)的更多相关文章

  1. ACM: HDU 3790 最短路径问题-Dijkstra算法

    HDU 3790 最短路径问题 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Des ...

  2. hdu 2680 最短路径(dijkstra算法+多源最短路径单源化求最小值)这题有点意思

    Choose the best route Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  3. 单源最短路径(dijkstra算法)php实现

    做一个医学项目,当中在病例评分时会用到单源最短路径的算法.单源最短路径的dijkstra算法的思路例如以下: 如果存在一条从i到j的最短路径(Vi.....Vk,Vj),Vk是Vj前面的一顶点.那么( ...

  4. 【算法设计与分析基础】25、单起点最短路径的dijkstra算法

    首先看看这换个数据图 邻接矩阵 dijkstra算法的寻找最短路径的核心就是对于这个节点的数据结构的设计 1.节点中保存有已经加入最短路径的集合中到当前节点的最短路径的节点 2.从起点经过或者不经过 ...

  5. 数据结构与算法--最短路径之Dijkstra算法

    数据结构与算法--最短路径之Dijkstra算法 加权图中,我们很可能关心这样一个问题:从一个顶点到另一个顶点成本最小的路径.比如从成都到北京,途中还有好多城市,如何规划路线,能使总路程最小:或者我们 ...

  6. 最短路径 | 深入浅出Dijkstra算法(一)

    参考网址: https://www.jianshu.com/p/8b3cdca55dc0 写在前面: 上次我们介绍了神奇的只有五行的 Floyd-Warshall 最短路算法,它可以方便的求得任意两点 ...

  7. 经典树与图论(最小生成树、哈夫曼树、最短路径问题---Dijkstra算法)

    参考网址: https://www.jianshu.com/p/cb5af6b5096d 算法导论--最小生成树 最小生成树:在连通网的所有生成树中,所有边的代价和最小的生成树,称为最小生成树. im ...

  8. POJ 3790 最短路径问题(Dijkstra变形——最短路径双重最小权值)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3790 Problem Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你 ...

  9. ACM: HDU 2544 最短路-Dijkstra算法

    HDU 2544最短路 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Descrip ...

随机推荐

  1. 线程创建的三种方法:继承Thread类,实现Runnable接口,实现Callable接口

    线程创建 三种创建方式 1. 继承Thread类 自定义线程类继承Thread类 重写run()方法,编写线程执行体 创建线程对象,调用start()方法启动线程 线程不一定执行,CPU按排调度 pa ...

  2. LinuxDHCP配置

    目录 一.DHCP服务 1.1.了解DHCP服务 1.2.使用DHCP的好处 1.3.DHCP的分配方式 1.4.DHCP的租约过程 客户机请求IP地址 重新登录 更新租约 1.5.使用DHCP动态配 ...

  3. MongoDB-01-基础

    mongodb逻辑结构 Mongodb 逻辑结构 MySQL逻辑结构 库 (database) 库 集合(collection) 表 文档(document) 数据行 安装部署 1 系统准备 1 这里 ...

  4. 【原创】利用“进程注入”实现无文件不死webshell

    引子 上周末,一个好兄弟找我说一个很重要的目标shell丢了,这个shell之前是通过一个S2代码执行的漏洞拿到的,现在漏洞还在,不过web目录全部不可写,问我有没有办法搞个webshell继续做内网 ...

  5. unserialize反序列化 安鸾 Writeup

    关于php反序列化漏洞原理什么,可以看看前辈的文章: https://xz.aliyun.com/t/3674 https://chybeta.github.io/2017/06/17/浅谈php反序 ...

  6. SQL 练习4

    查询不存在" 01 "课程但存在" 02 "课程的情况 SELECT * from sc WHERE cid = '02' AND sid not in (SE ...

  7. net start mongodb 提示:发生系统错误 5,拒绝访问。

    问题: net start mongodb 提示:发生系统错误 5,拒绝访问. 无法启动mongodb 服务. 解决办法: 右键cmd,选择以管理员身份运行即可

  8. git忽略文件夹提交以及gitignore修改后不生效的解决办法

    1.在 .gitgnore 文件加入需要忽略的问价夹正则表达式: 在配置完以后提交代码,你可能会发现git忽略配置不生效! 解决办法,将缓存的文件重新添加一下即可 2.打开命令行,将下面三个命令复制粘 ...

  9. CentOS7 安装Oracle19c数据库RPM包安装

    我前两天发了安装oracle12c的方法,但是我虽然在虚拟机试验成功了,正式服务器安装的时候发现还是不行,安装页面卡空白,也没有解决办法,所以我就放弃了界面安装找命令行安装的办法,找了一些之后发现都比 ...

  10. Springboot中配置druid

    pom文件信息: <!--引入druid数据源--> <!-- https://mvnrepository.com/artifact/com.alibaba/druid --> ...