当前位置: 首页 > news >正文

杭电3790--最短路径问题(双权Dijkstra)

最短路径问题

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 17425    Accepted Submission(s): 5199


Problem 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
 

 

Source
浙大计算机研究生复试上机考试-2010年
 

 

Recommend
notonlysuccess   |   We have carefully selected several similar problems for you:   2066  1217  2112  1142  1548 
RE: 题目中没有说花费钱也为最少, 所以距离和花费应是一一对应的;
 1 #include <cstdio>
 2 #include <cstring>
 3 using namespace std;
 4 const int INF = 0x3f3f3f;
 5 int map[1010][1010], mpa[1010][1010], dis1[1010], dis2[1010], vis[1010];
 6 int i, j, m, n;
 7 void Dijkstra(int cra)
 8 {
 9     memset(vis, 0, sizeof(vis));
10     for(i=1; i<=m; i++)
11     {
12         dis1[i] = map[cra][i];
13         dis2[i] = mpa[cra][i];
14     }
15     vis[cra] = 1;
16     for(i=1; i<m; i++)
17     {
18         int min = INF, temp = cra;
19         for(j=1; j<=m; j++)
20         {
21             if(!vis[j] && dis1[j] < min)
22             {
23                 temp = j;
24                 min = dis1[j];
25             }
26         }
27         vis[temp] = 1;
28         for(j=1; j<=m; j++)
29         {
30             if(!vis[j] && dis1[j] > dis1[temp] + map[temp][j])
31             {
32                 dis1[j] = dis1[temp] + map[temp][j];
33                 dis2[j] = dis2[temp] + mpa[temp][j];
34             }
35             else if(!vis[j] && dis1[j] == dis1[temp] + map[temp][j] && dis2[j] > dis2[temp]+mpa[temp][j])
36             {
37                 dis2[j] = dis2[temp] + mpa[temp][j]; 
38             }
39         }
40     }
41 }
42 int main()
43 {
44     while(~scanf("%d %d", &m, &n), m|n)
45     {
46         for(i=1; i<=m; i++)
47         for(j=1; j<=m; j++)
48         {
49             map[i][j]=(i==j?0:INF);
50             mpa[i][j]=(i==j?0:INF);
51         }
52         int a, b, d, p;
53         for(i = 1; i <= n; i++)
54         {
55             scanf("%d %d %d %d", &a, &b, &d, &p);
56         /*    if(map[a][b] > d)                     //坑。! 
57                 map[a][b]=map[b][a]=d;
58             if(mpa[a][b] > p)
59                 mpa[a][b]=mpa[b][a]=p;     */
60             if(map[a][b] > d)
61             {
62                 map[a][b]=map[b][a]=d;
63                 mpa[a][b]=mpa[b][a]=p;
64             }
65         }    
66         int s, t;
67         scanf("%d %d", &s, &t);
68         Dijkstra(s);
69         printf("%d %d\n", dis1[t], dis2[t]);
70     }
71     return 0;
72 } 

 

转载于:https://www.cnblogs.com/soTired/p/4700432.html

相关文章:

  • iostream迭代器的使用(11.18)
  • delphi 图像处理 二值化
  • 6个简单的解决方案解决Internet Explorer中的透明度问题
  • Atom飞行手册翻译: 3.5 创建主题
  • RMAN的基本概念和常用命令
  • 《go语言程序设计》学习(七)
  • Android NDK revision 7 Host 'awk' tool is outda...
  • VLAN的Hybrid和Trunk端口有何区别
  • 运行时库链接错误的修复方法
  • python def和lambda的一点心得
  • Mysql几种索引类型的区别及适用情况
  • 怎么将一个类的成员函数作为指针传递给另一个类的成员函数
  • Linux下安装MySQL
  • 新手ui设计师必备——切图规范
  • 查询条件字段做运算优化
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • CSS实用技巧
  • eclipse的离线汉化
  • ERLANG 网工修炼笔记 ---- UDP
  • Fastjson的基本使用方法大全
  • HashMap ConcurrentHashMap
  • Javascript基础之Array数组API
  • JavaScript设计模式系列一:工厂模式
  • javascript数组去重/查找/插入/删除
  • JS+CSS实现数字滚动
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • magento2项目上线注意事项
  • Sublime text 3 3103 注册码
  • Vue.js源码(2):初探List Rendering
  • 阿里云购买磁盘后挂载
  • 给第三方使用接口的 URL 签名实现
  • 给新手的新浪微博 SDK 集成教程【一】
  • 解决iview多表头动态更改列元素发生的错误
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 微服务框架lagom
  • linux 淘宝开源监控工具tsar
  • puppet连载22:define用法
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • $refs 、$nextTic、动态组件、name的使用
  • (C语言)字符分类函数
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (六)vue-router+UI组件库
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (三)Honghu Cloud云架构一定时调度平台
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (新)网络工程师考点串讲与真题详解
  • (转)3D模板阴影原理
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .NET处理HTTP请求
  • .NET实现之(自动更新)