题目链接

 /*
Name:hdu-3790-最短路径问题
Copyright:
Author:
Date: 2018/4/16 19:16:25
Description: dijkstra 模板题
*/
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
const int MaxN = ;
const int INF = 0x3f3f3f3f;
int dis[MaxN], g[MaxN][MaxN],N, src, costEdge[MaxN][MaxN], cost[MaxN];
bool v[MaxN]; void dijkstra() {
for (int i=; i<=N; i++){
dis[i] = INF;
cost[i] = INF;
}
dis[src] = ;
cost[src] = ;
memset(v, , sizeof(v));
for (int i=; i<=N; i++) {
int mark = -, mindis = INF;
for (int j=; j<=N; ++j) {
if (!v[j] && dis[j]<mindis) {
mindis = dis[j];
mark = j;
}
}
v[mark] = ;
for (int j=; j<=N; ++j) {
if (!v[j]) {
if (dis[mark] + g[mark][j] < dis[j]) {
dis[j] = dis[mark] + g[mark][j];
cost[j] = cost[mark] + costEdge[mark][j];
} else if(dis[mark] + g[mark][j] == dis[j] && cost[j] > cost[mark] + costEdge[mark][j]) {
cost[j] = cost[mark] + costEdge[mark][j];
}
}
}
}
}
int final[MaxN];
int main()
{
// freopen("in.txt", "r", stdin);
int m;
while (~scanf("%d %d", &N, &m) && (N || m)) {
memset(g, 0x3f, sizeof(g));
memset(dis, , sizeof(dis));
memset(cost, , sizeof(cost));
memset(costEdge, 0x3f, sizeof(costEdge)); for (int i=; i<m; i++) {
int u, v, w, c;
scanf("%d %d %d %d", &u, &v, &w, &c);
if(w < g[u][v]) { //必须判断 重边否则WA
g[u][v] = g[v][u] = w;
costEdge[u][v] = costEdge[v][u] = c;
}
}
int final = ;
scanf("%d %d", &src, &final);
dijkstra();
printf("%d %d\n", dis[final], cost[final]);
}
return ;
}

hdu-3790-最短路径问题(Dijkstra)的更多相关文章

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

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

  2. HDU - 3790 最短路径问题 (dijkstra算法)

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

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

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

  4. hdu 3790 最短路径问题(双重权值,dijkstra算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3790 题目大意:题意明了,输出最短路径及其花费. 需要注意的几点:(1)当最短路径相同时,输出最小花费 ...

  5. #HDU 3790 最短路径问题 【Dijkstra入门题】

    题目: 最短路径问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  6. hdu 3790 最短路径dijkstra(多重权值)

    最短路径问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  7. HDU 3790 最短路径问题(SPFA || Dijkstra )

    题目链接 题意 : 中文题不详述. 思路 :无论是SPFA还是Dijkstra都在更新最短路的那个地方直接将花费更新了就行,还有别忘了判重边,话说因为忘了判重边WA了一次. #include < ...

  8. HDU 3790 最短路径问题【Dijkstra】

    题意:给出n个点,m条边,每条边的长度d和花费p,给出起点和终点的最短距离和花费,求最短距离,如果有多个最短距离,输出花费最少的 在用dijkstra求最短距离的时候,再用一个f[]数组保存下最少花费 ...

  9. hdu 3790 最短路径问题(两个限制条件的最短路)

    http://acm.hdu.edu.cn/showproblem.php?pid=3790 有两个条件:距离和花费.首先要求距离最短,距离相等的条件下花费最小. dijkstra,仅仅是在推断条件时 ...

  10. HDU 3790 最短路径问题 (最短路)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3790 简单的最短路问题,这题听说有重边.我用spfa和dijkstra写了一遍,没判重边,速度都差不多 ...

随机推荐

  1. 剑指offer 面试56题

    面试56题: 题目:数组中数字出现的次数 题:一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 解题思路: 方法一:异或运算,详见<剑指offer&g ...

  2. Python3 optparse模块

    Python 有两个内建的模块用于处理命令行参数: 一个是 getopt,<Deep in python>一书中也有提到,只能简单处理 命令行参数: 另一个是 optparse,它功能强大 ...

  3. $《第一行代码:Android》读书笔记——第3章 UI基础

    (一)Android常用控件及简单用法 1.如下图: 2.补充: (1)margin:外边距:padding:内边距. (2)gravity:子元素的位置:layout_gravity:子元素在父元素 ...

  4. springboot-vue项目前台1

  5. JavaScript笔记02——基本语法(包括函数、对象、数组等)

    Doing Math & Logic Conditional & Looping Functions Objects Arrays Doing Math & Logic 1.J ...

  6. 【Head First Servlets and JSP】笔记13:session & cookie

    session的接口 杀死会话 cookie的性质 cookie的接口 再总结——cookie.session.JSESSIONID的前世今生 简单的定制cookie示例 1.session的接口,配 ...

  7. 摊铺机基本参数介绍(三一重工SSP220C-5)

    三一重工SSP220C-5稳定土摊铺机参数 SSP系列稳定土摊铺机SSP220C-5 动力强劲162kw 动力充分满足摊铺机各种工况下动力需求 高效任何工况,确保摊铺能力大于900t/h,行业内绝无仅 ...

  8. 使用concurrent.futures和ProcessPoolExecutor来替代线程和进程

    concurrent.futures和ProcessPoolExecutor这两个类实现的借口分别在不同的线程或进程中执行可调用的对象,这两个类在内部维护者一个工作线程或进程池,以及要执行的队列,这两 ...

  9. QGIS3.0.3+Qt5.9+VS2015_x64编译

    QGIS3.0.3+Qt5.9+VS2015_x64编译 参考:https://blog.csdn.net/u010670734/article/details/80241615 https://ww ...

  10. dll和lib

    lib:里面包含了很多源代码,工程会将这些源代码加入自己的项目中编译: dll:动态编译库,允许可执行文件在运行中加载里面的资源. 使用lib需注意两个文件:(1).h头文件,包含lib中说明输出的类 ...