HDU 3790最短路径问题 [最短路最小花费]
题目链接:【http://acm.hdu.edu.cn/showproblem.php?pid=3790】
最短路径问题
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 25620 Accepted Submission(s): 7650
(1<n<=1000, 0<m<100000, s != t)
1 2 5 6
2 3 4 5
1 3
0 0
题解:最短路问题容易解决:最多有1000个顶点,用邻接矩阵保存边,并维护重边,DIJ(O(n^2))可以解决。在维护最短路的同时维护最小费用。如果dis[u]>dis[v]+E[u][v]||(dis[u]==dis[v]+mp[u][v]&&CO[u]>CO[v]+mp[u][v])。
#include<bits/stdc++.h>
using namespace std;
const int INF = 1e7 + ;
const int maxn = ;
int N, M;
int E[maxn][maxn], CO[maxn][maxn];
int dis[maxn], cost[maxn], vis[maxn];
void DIJ(int st, int ed)
{
for(int i = ; i <= N; i++)
dis[i] = cost[i] = INF;
dis[st] = cost[st] = ;
memset(vis, , sizeof(vis));
for(int i = ; i <= N; i++)
{
int x = -, len = INF + ;
for(int j = ; j <= N; j++)
if(!vis[j] && len > dis[j]) len = dis[x = j];
if(x == -) break;
vis[x] = ;
for(int v = ; v <= N; v++)
{
if(dis[v] > dis[x] + E[x][v] || (dis[v] == dis[x] + E[x][v] && cost[v] > cost[x] + CO[x][v]))
{
dis[v] = dis[x] + E[x][v];
cost[v] = cost[x] + CO[x][v];
}
}
}
}
int main ()
{
while(~scanf("%d%d", &N, &M))
{
if(N == && M == ) break;
int u, v, len, co;
for(int i = ; i <= N; i++)
{
for(int j = ; j <= N; j++)
E[i][j] = CO[i][j] = INF;
E[i][i] = CO[i][i] = ;
}
for(int i = ; i <= M; i++)
{
scanf("%d%d%d%d", &u, &v, &len, &co);
if(E[u][v] > len || (E[u][v] == len && CO[u][v] > co))
{
E[u][v] = E[v][u] = len;
CO[u][v] = CO[v][u] = co;
}
}
int st, ed;
scanf("%d%d", &st, &ed);
DIJ(st, ed);
printf("%d %d\n", dis[ed], cost[ed]);
}
return ;
}
HDU 3790最短路径问题 [最短路最小花费]的更多相关文章
- HDU 3790 最短路径问题 (最短路)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3790 简单的最短路问题,这题听说有重边.我用spfa和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,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费 ...
- HDU 3790 最短路径问题 (最短路)
题目链接 Problem Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的. ...
- 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 Subm ...
- hdu 3790 最短路径问题(两个限制条件的最短路)
http://acm.hdu.edu.cn/showproblem.php?pid=3790 有两个条件:距离和花费.首先要求距离最短,距离相等的条件下花费最小. dijkstra,仅仅是在推断条件时 ...
- hdu 3790 最短路径问题(最短路,Dijsktra)
题目 Dijsktra基础题,只是多了一个花费,稍稍变动处理就好 #define _CRT_SECURE_NO_WARNINGS #include<string.h> #include&l ...
- HDU 5889 Barricade(最短路+最小割水题)
Barricade Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total ...
随机推荐
- 原生js写的一个简单slider
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 赶快收藏!16款最流行的 JavaScript 框架
下面为大家介绍 16款最流行的 JavaScript 框架,赶快收藏! 1. jQuery – Javascript框架 jQuery 是最流行的 JavaScript 框架,它简化了HTML 文档遍 ...
- 使用asp.net改变图片颜色
最近奇葩经理提出了奇葩的需求,要能在网站上改变图片的颜色,比如灰色的变成彩色,彩色的变成灰色,尼玛楼主的感受你们不懂!于是有了下面的代码... 用法:调用update_pixelColor方法并传参数 ...
- idea自动识别get set方法
- Java 中的几种线程池这么用才是对的
为什么要使用线程池 虽然大家应该都已经很清楚了,但还是说一下.其实归根结底最主要的一个原因就是为了提高性能. 线程池和数据库连接池是同样的道理,数据库连接池是为了减少连接建立和释放带来的性能开销.而线 ...
- 天梯赛 L1-009 N个数求和 (模拟)
本题的要求很简单,就是求N个数字的和.麻烦的是,这些数字是以有理数"分子/分母"的形式给出的,你输出的和也必须是有理数的形式. 输入格式: 输入第一行给出一个正整数N(<=1 ...
- 网易android开发面试题及心得
前几天面试网易android开发,总体感觉问题难度一般.怪我自己没有好好梳理知识,尤其是基础,后面就没消息了... 笔试: 1.描述Activity 生命周期 2.什么是ANR,如何规避? 3.描述a ...
- docker之构建redis-cluster集群
下载和编译redis安装包 参考:https://www.cnblogs.com/cwp-bg/p/8094914.html # 从官方网站下载安装包,注意,当前在哪个目录下执行命令,下载的包将在哪个 ...
- linux device tree源代码解析--转
//Based on Linux v3.14 source code Linux设备树机制(Device Tree) 一.描述 ARM Device Tree起源于OpenFirmware (OF), ...
- ie7浏览器兼容问题
win10 下如何调试Ie 网上有很多ie的测试工具,包括ms自己出的有,但是如果是win10系统,压根不需要这些玩意. win10 浏览器edge虽然是重写过的,但是win10并没有完全抛弃ie,可 ...