hdu 3790 (最短路径问题dijkstra)
主题链接:http://acm.hdu.edu.cn/showproblem.php?pid=3790
(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 <cstdio>
#include <iostream>
#include <algorithm>
#define MAXN 1017
#define INF 0x3fffffff
using namespace std;
int mat[MAXN][MAXN];
int cost[MAXN][MAXN];
int n,m;//n为结点数。m为道路数
int MONEY[MAXN];
int dijkstra (int s,int f)
{
//s为起点。 f:为终点
int dis[MAXN];//记录到随意点的最短距离
int mark[MAXN];//记录被选中的结点
int i, j, k;
for(i = 1; i <= n; i++)
{
mark[i] = 0;//初始化全部结点。每一个结点都没有被选中
dis[i] = mat[s][i];
MONEY[i] = cost[s][i];
}
mark[s] = 1;//start结点被选中
dis[s] = 0;//将start结点的的距离设置为0
int min;//设置最短的距离。
for(i = 1; i <= n; i++)
{
k = 1;//赋初值非常重要
min = INF;
for(j = 1; j <= n;j++)
{
if(mark[j] == 0 && dis[j] < min)//未被选中的结点中,距离最短的被选中
{
min = dis[j] ;
k = j;
}
}
mark[k] = 1;//标记为被选中
for(j = 1; j <= n; j++)
{
if(!mark[j] && dis[j]>dis[k]+mat[k][j])//改动剩余结点的最短距离
{
dis[j] = dis[k] + mat[k][j];
MONEY[j]=MONEY[k]+cost[k][j];
}
else if(!mark[j] && dis[j]==dis[k]+mat[k][j])
{
if(MONEY[j] > MONEY[k]+cost[k][j])
MONEY[j] = MONEY[k]+cost[k][j];
}
}
}
return dis[f];
} void init()
{
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
{
cost[i][j] = INF;
if(i == j)
mat[i][j] = 0;
else
mat[i][j] = INF;
}
}
}
int main()
{
int i,j;
int a,b,dis,mon;
while(scanf("%d %d",&n,&m))
{
if(n == 0 && m == 0)
break;
init();
for(i = 1; i <= m; i++)
{
scanf("%d %d %d %d",&a,&b,&dis,&mon);
if(dis < mat[a][b])
{
mat[a][b] = mat[b][a] = dis;
cost[a][b] = cost[b][a]= mon;
}
if(dis == mat[a][b])
{
if(mon < cost[a][b])
cost[a][b] = cost[b][a] = mon;
}
}
int s, e;
scanf("%d%d",&s,&e);
int ans = dijkstra(s, e);
printf("%d %d\n",ans,MONEY[e]);
}
return 0;
}
版权声明:本文博客原创文章,博客,未经同意,不得转载。
hdu 3790 (最短路径问题dijkstra)的更多相关文章
- ACM: HDU 3790 最短路径问题-Dijkstra算法
HDU 3790 最短路径问题 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Des ...
- HDU - 3790 最短路径问题 (dijkstra算法)
HDU - 3790 最短路径问题 Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费 ...
- POJ 3790 最短路径问题(Dijkstra变形——最短路径双重最小权值)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3790 Problem Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你 ...
- hdu 3790 最短路径问题(双重权值,dijkstra算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3790 题目大意:题意明了,输出最短路径及其花费. 需要注意的几点:(1)当最短路径相同时,输出最小花费 ...
- #HDU 3790 最短路径问题 【Dijkstra入门题】
题目: 最短路径问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- hdu 3790 最短路径dijkstra(多重权值)
最短路径问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- HDU 3790 最短路径问题(SPFA || Dijkstra )
题目链接 题意 : 中文题不详述. 思路 :无论是SPFA还是Dijkstra都在更新最短路的那个地方直接将花费更新了就行,还有别忘了判重边,话说因为忘了判重边WA了一次. #include < ...
- HDU 3790 最短路径问题【Dijkstra】
题意:给出n个点,m条边,每条边的长度d和花费p,给出起点和终点的最短距离和花费,求最短距离,如果有多个最短距离,输出花费最少的 在用dijkstra求最短距离的时候,再用一个f[]数组保存下最少花费 ...
- hdu 3790 最短路径问题(两个限制条件的最短路)
http://acm.hdu.edu.cn/showproblem.php?pid=3790 有两个条件:距离和花费.首先要求距离最短,距离相等的条件下花费最小. dijkstra,仅仅是在推断条件时 ...
- HDU 3790 最短路径问题 (最短路)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3790 简单的最短路问题,这题听说有重边.我用spfa和dijkstra写了一遍,没判重边,速度都差不多 ...
随机推荐
- velocity中的velocityCounter不起作用的原因
今天用org.springframework.ui.velocity.VelocityEngineFactoryBean 时,velocityCounter这个变量的时候死活不起作用,折腾了良久也不行 ...
- asp.net web api帮助文档的说明
为asp.net的mvc web api填写自己的帮助文档 1. 加入Help的area(能够通过命令行或其它方式加入) 命令行:Install-Package Microsoft.AspNet.We ...
- 源代码编译lamp环境
没有办法用 rpm查询一个源代码包是否安装 因为 并不是用rpm安装的 可以先吧 selinux 给禁用掉 iptables -F 把防火墙规则全部删除 首先确保 gcc gcc-c++ ma ...
- ALV双击单元格事件处理
*激发双击事件 FORM f_alv_user_command USING r_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield. "先引 ...
- 百度地图 javascript相关Bug搜集
一 在手机里用百度地图js版做webapp bug集合 1 之前用2.0版本的时候发现只要地图添加了覆盖物,无论数量多少,当地图放大到很小的范围时候,会卡死 1.1 当时处理办法:将版本降低至1. ...
- Tomcat 配置WEB虚拟映射 及 配置虚拟主机
Tomcat 配置WEB虚拟映射 及 配置虚拟主机 配置WEB虚拟映射文件夹有三种方法例如以下: 第一(要重新启动server的): 打开路径 Tomcat 6.0\conf 下的 server.x ...
- Delphi引用C对象文件
C语言应用非常广泛,并在世界各地拥有大量的代码库.这些代码库与Delphi的可比性较小,因此如果我们无需转换为Delphi代码而可以直接使用这些库的部分代码就完美了.幸运的是,Delphi允许连接到C ...
- 为什么EXE文件出现了不该出现的“盾牌”
下载了一个小程序,它的功能并不需要管理员权限.但是在Win7下面它的图标上出现了一个“小盾牌”,这意味着运行它需要提升权限……果然,双击时弹出了UAC对话框.用二进制编辑器打开这个EXE,发现它没有内 ...
- c#2解决c#1中的问题之用泛型实现参数化类型
为什么需要泛型 你手中还有c#1的代码吗?数一数其中的强制转换有多少,特别是那些大量使用集合的代码.几乎每次使用foreach都需要隐式的强制转换.使用那些为不同数据类型而设计的类型,就意味着强制转换 ...
- JSTL分割字符 fn:split()
<%@ page language="java" contentType="text/html; charset=UTF-8"%><%@ ta ...