hdoj--3790--最短路径问题(双权值迪杰斯特拉)
最短路径问题
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 19982 Accepted Submission(s): 5945
(1<n<=1000, 0<m<100000, s != t)
3 2 1 2 5 6 2 3 4 5 1 3 0 0
9 11
- #include<stdio.h>
- #include<string.h>
- #define INF 0xfffffff
- int mapd[1010][1010],mapp[1010][1010],vis[1010];
- int d1[1010],d2[1010],m,n;
- void dijkstra(int v)
- {
- int i,j,k;
- vis[v]=1;
- for(i=1;i<=m;i++)
- {
- d1[i]=mapd[v][i];
- d2[i]=mapp[v][i];
- }
- for(i=0;i<m;i++)
- {
- int min=INF;
- k=-1;
- for(j=1;j<=m;j++)
- {
- if(!vis[j]&&d1[j]<min)
- {
- k=j;
- min=d1[j];
- }
- }
- if(k==-1) break;
- vis[k]=1;
- for(j=1;j<=m;j++)
- {
- if(!vis[j]&&d1[j]>d1[k]+mapd[k][j])
- {
- d1[j]=d1[k]+mapd[k][j];
- d2[j]=d2[k]+mapp[k][j];
- }
- if(!vis[j]&&d1[j]==d1[k]+mapd[k][j]&&d2[j]>d2[k]+mapp[k][j])
- {
- d2[j]=d2[k]+mapp[k][j];
- }
- }
- }
- }
- int main()
- {
- int i,j,k,s,e;
- while(scanf("%d%d",&m,&n),m||n)
- {
- for(i=0;i<=m;i++)
- for(j=0;j<=m;j++)
- {
- mapd[i][j]=mapd[j][i]=INF;
- mapp[i][j]=mapp[j][i]=INF;
- }
- int a,b,c,d;
- memset(vis,0,sizeof(vis));
- memset(d1,0,sizeof(d1));
- memset(d2,0,sizeof(d2));
- while(n--)
- {
- scanf("%d%d%d%d",&a,&b,&c,&d);
- if(c<mapd[a][b])
- {
- mapd[a][b]=mapd[b][a]=c;
- mapp[a][b]=mapp[b][a]=d;
- }
- }
- scanf("%d%d",&s,&e);
- dijkstra(s);
- printf("%d %d\n",d1[e],d2[e]);
- }
- return 0;
- }
hdoj--3790--最短路径问题(双权值迪杰斯特拉)的更多相关文章
- hdu 3790 最短路径问题(双重权值,dijkstra算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3790 题目大意:题意明了,输出最短路径及其花费. 需要注意的几点:(1)当最短路径相同时,输出最小花费 ...
- [链接]最短路径的几种算法[迪杰斯特拉算法][Floyd算法]
最短路径—Dijkstra算法和Floyd算法 http://www.cnblogs.com/biyeymyhjob/archive/2012/07/31/2615833.html Dijkstra算 ...
- 最短路径之迪杰斯特拉(Dijkstra)算法
对于网图来说,最短路径,是指两顶点之间经过的边上权值之和最少的路径,并且我们称路径上的第一个顶点为源点,最后一个顶点为终点.最短路径的算法主要有迪杰斯特拉(Dijkstra)算法和弗洛伊德(Floyd ...
- 最短路径 - 迪杰斯特拉(Dijkstra)算法
对于网图来说,最短路径,是指两顶点之间经过的边上权值之和最少的路径,并且我们称路径上的第一个顶点为源点,最后一个顶点为终点.最短路径的算法主要有迪杰斯特拉(Dijkstra)算法和弗洛伊德(Floyd ...
- 算法与数据结构(六) 迪杰斯特拉算法的最短路径(Swift版)
上篇博客我们详细的介绍了两种经典的最小生成树的算法,本篇博客我们就来详细的讲一下最短路径的经典算法----迪杰斯特拉算法.首先我们先聊一下什么是最短路径,这个还是比较好理解的.比如我要从北京到济南,而 ...
- 迪杰斯特拉(Java)
public class Dijsktra { public static void main(String[] args) { Dijsktra d=new Dijsktra(); int[][] ...
- HDU 3790(两种权值的迪杰斯特拉算法)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=3790 最短路径问题 Time Limit: 2000/1000 MS (Java/Others) ...
- C++迪杰斯特拉算法求最短路径
一:算法历史 迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法.是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题.迪杰斯特拉算法主要特点是以 ...
- 最短路径之迪杰斯特拉(Dijkstra)算法
迪杰斯特拉(Dijkstra)算法主要是针对没有负值的有向图,求解其中的单一起点到其他顶点的最短路径算法.本文主要总结迪杰斯特拉(Dijkstra)算法的原理和算法流程,最后通过程序实现在一个带权值的 ...
随机推荐
- gitlab 第1次提交代码到1个新仓库
1.如果是本地刚刚搭建好git环境,第一次和gitlab服务器产生连接 参照这个文 https://www.cnblogs.com/kaerxifa/p/10929098.html 2.已经和gitl ...
- php base64互转pdf
/* * base64转pdf */ function base642pdf($formTxt,$toPdf) { $file = file_get_contents($formTxt);//读 $d ...
- Sersync+Rsync实现数据文件实时同步
rsync+inotify-tools与rsync+sersync架构的区别1,rsync+inotify-tools只能记录下被监听的目录发生的变化(增删改)并没有把具体变化的文件或目录记录下来在同 ...
- idea中配置xml不自动提示解决方案
1.打开设置File-->Settings(或者Ctrl + Alt + S)--->Languages&Frameworks-->Schemas and DTDS 2.选择 ...
- react 子组件给父组件传值
import React from 'react'import '../page1/header.css'import { Table } from 'antd'import Child from ' ...
- ie 浏览器下ajax请求来自缓存的解决方法
如上图所示,在ie浏览器下发出的请求,如何缓存中已经出现过这条请求记录,则不会请求服务端数据,解决方法是在请求后增加一个随机数,使每次请求都不同*可以添加当前时间戳 url+'?t='+Date.no ...
- [LUOGU] 4933 大师
\(Orz\) \(ljt12138!\) 设状态\(f[i][j]\)表示以\(i\)为结尾,公差为\(j\)的长度大于\(1\)的数列有几个. 然后转移方程就很好想了. \(k=H[i]-H[j] ...
- Vmware在NAT模式下网络配置详解
Vmware在NAT模式下网络配置详解 Linux中的网络配置对于接触Linux不久的小白菜来说,还是小有难度的,可能是不熟悉这种与windows系列迥然不同的命令行操作,也可能是由于对Linux的结 ...
- 第五节:numpy之数组维度处理
- JavaScript初步学习----基本使用,简单事件,修改样式,数据类型
JavaScript基本使用 JavaScript原名叫livescript,是一门动态类型,弱类型基于原型的脚本语言 用于页面特效,前后交替,后台开发(node) JavaScript写在s ...