HDU-3790 最短路最小花费
判断路径相等时的情况
#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std; #define pf printf
#define sf scanf
#define mp make_pair
#define INF 0x3f3f3f3f const int MAXN = + ; int n,m; struct node
{
int d,fee;
}g[MAXN][MAXN]; int dis[MAXN],f[MAXN],vis[MAXN]; void dijkstra(int v)
{
int i,j,mind,minf,dir;
for(i=;i<=n;i++)
{
dis[i] = f[i] = INF;
vis[i] = ;
}
dis[v] = f[v] = ;
vis[v] = ;
for(i=;i<=n;i++)
{
mind = minf = INF;
for(j=;j<=n;j++)
{
if(!vis[j] && (dis[j]<mind || (dis[j]==mind && f[j]<minf)))
{
mind = dis[j];
minf = f[j];
dir = j;
}
}
vis[dir] = ;
for(j=;j<=n;j++)
{
if(!vis[j] && g[dir][j].d<INF && (dis[j] > (dis[dir]+g[dir][j].d) || (dis[j] == (dis[dir]+g[dir][j].d) && f[j]>f[dir]+g[dir][j].fee)))
{
dis[j] = dis[dir]+g[dir][j].d;
f[j]=f[dir]+g[dir][j].fee;
}
}
} } int main()
{
int i,j;
int a,b,d,fee,st,ed;
while(sf("%d %d",&n,&m)==,m+n)
{
for(i=;i<=n;i++)
{
for(j=;j<=n;j++)
{
g[i][j].d = g[i][j].fee = (i==j ? :INF);
}
}
for(i=;i<m;i++)
{
sf("%d%d%d%d",&a,&b,&d,&fee);
if(d < g[a][b].d)
{
g[a][b].d = g[b][a].d = d;
g[a][b].fee = g[b][a].fee = fee;
}
else if(d == g[a][b].d)
g[a][b].fee = g[b][a].fee = min(g[a][b].fee,fee);
}
sf("%d%d",&st,&ed);
dijkstra(st);
pf("%d %d\n",dis[ed],f[ed]);
}
return ;
HDU-3790 最短路最小花费的更多相关文章
- HDU 3790最短路径问题 [最短路最小花费]
题目链接:[http://acm.hdu.edu.cn/showproblem.php?pid=3790] 最短路径问题 Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 3790 最短路径问题 (最短路)
题目链接 Problem Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的. ...
- hdu 5521 最短路
Meeting Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total ...
- hdu 3790 最短路径问题(双重权值,dijkstra算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3790 题目大意:题意明了,输出最短路径及其花费. 需要注意的几点:(1)当最短路径相同时,输出最小花费 ...
- ACM: HDU 3790 最短路径问题-Dijkstra算法
HDU 3790 最短路径问题 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Des ...
- HDU 5988.Coding Contest 最小费用最大流
Coding Contest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- 【bzoj1266】[AHOI2006]上学路线route 最短路+最小割
题目描述 可可和卡卡家住合肥市的东郊,每天上学他们都要转车多次才能到达市区西端的学校.直到有一天他们两人参加了学校的信息学奥林匹克竞赛小组才发现每天上学的乘车路线不一定是最优的. 可可:“很可能我们在 ...
- Mr. Panda and Crystal HDU - 6007 最短路+完全背包
题目:题目链接 思路:不难看出,合成每个宝石需要消耗一定的魔力值,每个宝石有一定的收益,所以只要我们知道每个宝石合成的最小花费,该题就可以转化为一个背包容量为初始魔力值的完全背包问题,每个宝石的最小花 ...
- PAT-1030 Travel Plan (30 分) 最短路最小边权 堆优化dijkstra+DFS
PAT 1030 最短路最小边权 堆优化dijkstra+DFS 1030 Travel Plan (30 分) A traveler's map gives the distances betwee ...
随机推荐
- 条目二十八《正确理解由reverse_iterator的base()成员函数所产生的iterator的用法》
条目二十八<正确理解由reverse_iterator的base()成员函数所产生的iterator的用法> 迭代器的种类一共有四种,上面已经说过了.这里就不再次写出来. 这一个条目主要是 ...
- Bootrap 项目实战(微金所前端首页)第一部分
微金所前端首页成果图:(这是本人自己按照微金所官网首页,采用Bootrap,JS,JQuery,css制作的网页效果图,在第二部分我会公布网页源代码) 如需网页源代码,请在下方留言,备注你的qq邮箱. ...
- (USB HID) VC++ 使用 SetupAPI 操作 USB HID Device
在VC裡頭使用 Api必須include 跟加入 lib,加入之後就可以在VC裡頭任意使用api了 暫時先貼上程式碼...等待有空時候在更新說明 extern "C" { #inc ...
- pip报failed to create process
使用pip命令的时候报failed to create process 1.错误提示窗口如下图 2.报这个错误的原因,是因为你改动了python的目录名称或位置.因为,我的电脑是安装了anaconda ...
- 高阶篇:4.2.4)DFMEA严重度S(+分类e)、频度O、探测度D、风险优先系数RPN
本章目的:填写严重度S(+分类).频度O.探测度D,判定风险优先系数RPN. 1.前言 实施阶段中, 要求.潜在失效模式.潜在失效后果.潜在失效原因和现有设计控制措施等 5 个为基础项, 它们的分析是 ...
- C#集合之队列
队列是其元素按照先进先出(FIFO)的方式来处理的集合. 队列使用System.Collections.Generic名称空间中的泛型类Queue<T>实现.在内部,Queue<T& ...
- Android调用 .Net Core WebApi 返回数据,用FastJSON解析一直报错。
问题描述:.Net Core WebApi中用Newtonsoft.Json 把datatable转成json字符串,如:JsonConvert.SerializeObject(table,Forma ...
- 安装Windows 64 位 mysql 最新版本解压包中没有data目录和my-default.ini及服务无法启动的快速解决办法
mysql官网下载地址:https://dev.mysql.com/downloads/mysql/ 首先安装包解压后,没有网上教程里面提到的data文件夹和my-default.ini 配置环境变量 ...
- JMeterPlugins插件
一.线程组1.jp@gc - Stepping Thread Group,如下图: 类似loadrunner的场景设置,解释:This Group will start 10 threads:这次的测 ...
- 2019年UX设计新趋势
UX设计总是在不断变化中.最近短短两年的时间里,我们已经看到,很多地方都大规模采用颠覆性技术,比如语音用户界面,混合现实和智能家居设备.设计这些体验的实际过程可能保持不变,但新技术的出现引发了新的行为 ...