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)算法的原理和算法流程,最后通过程序实现在一个带权值的 ...
随机推荐
- 常用MySQL语句整合
常用MySQL语句整合 1. MySQL服务的配置和使用 修改MySQL管理员的口令:mysqladmin –u root password 密码字符串 如:mysqldmin –u root pas ...
- 14、Scala类型参数
1.泛型类 2.泛型函数 3.上边界Bounds 4.下边界Bounds 5.View Bounds 6.Context Bounds 7.Manifest Context Bounds 8.协变和逆 ...
- (转)分布式文件存储FastDFS(五)FastDFS常用命令总结
http://blog.csdn.net/xingjiarong/article/details/50561471 1.启动FastDFS tracker: /usr/local/bin/fdfs_t ...
- Operation Queues 面向对象的封装
Operation Queues An operation queue is the Cocoa equivalent of a concurrent dispatch queue and is im ...
- echarts图表初始大小问题及echarts随窗口变化自适应
最近在做一个轮播图,使用的是element的Carousel走马灯,每一个走马灯里是eachrts图,开始页面加载的时候发现echarts图并不能自适应,开始以为是走马灯的问题,后来发现不是 不知道大 ...
- element select下拉框绑定number类型
vue 开发中element-ui库的switch开关绑定number类型数据不成功问题 解决方法
- 【剑指Offer】剑指offer题目汇总
本文为<剑指Offer>刷题笔记的总结篇,花了两个多月的时间,将牛客网上<剑指Offer>的66道题刷了一遍,以博客的形式整理了一遍,这66道题属于相对基础的算法题目,对于 ...
- enote笔记语言(2)(ver0.2)
why not(whyn't) 为什么不(与“why”相对应,是它的反面) how对策 how设计 key-memo ...
- UNIX C 总结
--day01--王建立QQ:2529866769今天的内容:一.计算机的框架什么是操作系统?(汽车)加油系统 油门 用户跟加油子系统交互的窗口.(接口)方向系统 方向盘 用户跟方向系统的交互接口.导 ...
- nexus3的安装和使用
参考:https://www.cnblogs.com/2YSP/p/9533506.html http://www.54tianzhisheng.cn/2017/10/14/Nexus3-Maven/ ...