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,终点t。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 <algorithm>
#include <cstring>
#include <cstdio>
#include <cctype>
#include <cstdlib>
#include <stack>
#include <cmath>
#include <queue>
#define INF 0xffffff
using namespace std;
const int maxn = ;
int n, m, s, t, a, b, d, p;
int G[maxn][maxn];//距离
int pd[maxn][maxn];//金钱
int dis[maxn];//距离
int sp[maxn];//花费
bool vis[maxn];//记录是否走过 void Dij(){
dis[s] = ;
sp[s] = ; for(int k=; k<=n; k++){
int Min = INF ;
int ind = - ;
for(int i=; i<=n; i++){
if( !vis[i] && dis[i]<Min){
ind = i ;
Min = dis[i];
}
}
vis[ind] = true; for(int j=; j<=n; j++){
if( !vis[j] && dis[ind]+G[ind][j]<dis[j]){
dis[j] = dis[ind] + G[ind][j];
sp[j] = sp[ind] + pd[ind][j];
}
else if( !vis[j] && dis[j] == dis[ind]+G[ind][j] ){
sp[j] = min(sp[j],sp[ind]+pd[ind][j]);
}
}
}
} int main(){
while( scanf("%d %d",&n, &m) !=EOF ){
if( n == && m == ) break;
for(int i=; i<=n; i++){
vis[i] = false ;
sp[i] = INF ;
dis[i] = INF ;
for(int j=; j<=n; j++){
G[i][j] = INF ;
}
}
while( m -- ){
scanf("%d %d %d %d",&a, &b, &d, &p);
G[a][b] = G[b][a] = d ;
pd[a][b] = pd[b][a] = p ;
}
scanf("%d %d", &s, &t);
Dij();
cout << dis[t] << " " << sp[t] << endl ;
}
return ;
}

ACM题目————最短路径问题的更多相关文章

  1. HDU ACM 3790 最短路径问题

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

  2. ACM题目————中缀表达式转后缀

    题目描述 我们熟悉的表达式如a+b.a+b*(c+d)等都属于中缀表达式.中缀表达式就是(对于双目运算符来说)操作符在两个操作数中间:num1 operand num2.同理,后缀表达式就是操作符在两 ...

  3. ACM之最短路径做题笔记与记录

    在这里纪念一下从4月开始一直因为事情而荒废了的最短路,多亏了jbb的帮助,我才完成了FZU热身赛一题简单的一个用模拟链表存边以及最短路径的学习,目前(6.5)已经学会使用了最简单的djstral与sp ...

  4. 超强的ACM题目类型总结

    转:初期: 一.基本算法:       (1)枚举. (poj1753,poj2965)     (2)贪心(poj1328,poj2109,poj2586)     (3)递归和分治法.       ...

  5. HDU ACM 题目分类

    模拟题, 枚举1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 104 ...

  6. ACM题目推荐(刘汝佳书上出现的一些题目)[非原创]

    原地址:http://blog.csdn.net/hncqp/article/details/1758337 推荐一些题目,希望对参与ICPC竞赛的同学有所帮助. POJ上一些题目在http://16 ...

  7. 有一种acm题目叫做,奇葩!

    本文全然没有技术含量,纯粹是娱乐. 我事实上想写点东西.可是近期好像做计算几何做得太多了,一种想说说不出东西的感觉,唯有写一下一些奇葩的题目了. HDU3337:Guess the number pi ...

  8. ACM题目————STL练习之求次数

    题目地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=1112 描述 题意很简单,给一个数n 以及一个字符串str,区间[i,i+n-1] 为一个 ...

  9. ACM题目————zoj问题

    题目1006:ZOJ问题 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:20322 解决:3560 题目描述: 对给定的字符串(只包含'z','o','j'三种字符),判断他是否能AC. ...

随机推荐

  1. iOS调用系统的电话功能

    NSString *allString = [NSString stringWithFormat:@"tel:10086"];//注意电话号码不能包含空格,包含空格的电话号码拨打没 ...

  2. BeanUtils设置字段值失败问题

    package org.apache.commons.beanutils; import static org.junit.Assert.*; import java.beans.BeanInfo; ...

  3. DG - physical standby failover切换过程

    1.failover前检查 #如果有多个standby数据库,查看哪个standby接收的redo最新. SQL> select * from v$archive_dest_status: #查 ...

  4. Excel将秒转换成标准的时间格式HH:MM:SS

    Excel将秒转换成标准的时间格式HH:MM:SS 比如120秒,转换成00:02:00 Excel公式为: =TEXT(A1/86400,"[hh]:mm:ss") A1为秒数据 ...

  5. Save ITCM

    Debug String if below 64 BYTE it will in DRAM or it will in ITCM So to save ITCM , move it to ALLStr ...

  6. ${pageContext.request.contextPath} JSP取得绝对路径

    一.问题     JSP中究竟采用绝对路径还是采用相对路径随着所采用技术的越来越复杂,这个问题也变得越来越难以解决. 1)采用相对路径遇到的问题      相对路径固然比较灵活,但如果想复制页面内的代 ...

  7. [reprint]malloc与calloc的区别

    [http://blog.163.com/crazy20070501@126/] 转自某自由人的博客: malloc与calloc的区别 函数malloc()和calloc()都可以用来动态分配内存空 ...

  8. paper 57 :颜色直方图的代码

    clear clc close all Image = imread('29.jpg');[M,N,O] = size(Image);[h,s,v] = rgb2hsv(Image); H = h;  ...

  9. 夺命雷公狗---DEDECMS----28dedecms浏览次数的完成

    在页面里显示每部影视作品的浏览量,显示方法如下所示: 首先我们要在内容模板文件里增加显示区: 然后到后保存下文章页的内容页的模版,然后去看下对我们的样式有没有什么影响: 看到这里我们就已经成功一点点噢 ...

  10. mysql取出现在的时间戳和时间时间戳转成人类看得懂的时间

    mysql取出现在的时间戳和时间时间戳转成人类看得懂的时间,我们在mysql里面他封装了一个内置的时间戳转化的函数,比如我们现在的时间戳是:1458536709 ,"%Y-%m-%d&quo ...