HDU 3790 (最短路 + 花费)
题意:
给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的。
#include<bits/stdc++.h>
using namespace std;
const int maxN = 1e4 + ;
const int maxM = + ;
const int inf = 1e9 + ;
int n, m, ecnt;
int head[maxN];
struct{
int to, d, c, nxt;
}edge[ * maxM];
void init(){
memset(head, -, sizeof(head));
ecnt = ;
}
void addEdge(int u, int v, int d, int c){
edge[ecnt].to = v;
edge[ecnt].d = d;
edge[ecnt].c = c;
edge[ecnt].nxt = head[u];
head[u] = ecnt++;
}
int dist[maxN], cost[maxN], vis[maxN];
void spfa(int S, int E){
fill(dist, dist + maxN , inf);
fill(cost, cost + maxN, inf);
memset(vis, , sizeof(vis));
queue<int> q;
q.push(S);
dist[S] = ;
cost[S] = ;
vis[S] = ; while(!q.empty()){
int u = q.front();
for(int i = head[u]; i != -; i = edge[i].nxt){
int v = edge[i].to, d = edge[i].d, c = edge[i].c;
if(dist[u] + d < dist[v]){ //路径短的话直接更新
dist[v] = dist[u] + d;
cost[v] = cost[u] + c;
q.push(v);
if(!vis[v]){
vis[v] = ;
q.push(v);
}
}else if(dist[u] + d == dist[v]){ //路径相等的话更新cost的最小值
cost[v] = min(cost[v] , cost[u] + c);
}
}
vis[u] = ;
q.pop();
}
cout << dist[E] << " " << cost[E] << "\n";
}
int main(){
// freopen("1.txt","r", stdin);
ios::sync_with_stdio(false);
while(cin >> n >> m){
if(n == ) break;
init();
for(int i = ; i < m; i++){
int u, v, d, c;
cin >> u >> v >> d >> c;
addEdge(u,v,d,c);
addEdge(v,u,d,c);
}
int S, E;
cin >> S >> E;
spfa(S, E); }
}
HDU 3790 (最短路 + 花费)的更多相关文章
- ACM: HDU 3790 最短路径问题-Dijkstra算法
HDU 3790 最短路径问题 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Des ...
- hdu 5521 最短路
Meeting Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total ...
- HDU - 3790 最短路径问题 (dijkstra算法)
HDU - 3790 最短路径问题 Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费 ...
- ACM: HDU 2544 最短路-Dijkstra算法
HDU 2544最短路 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Descrip ...
- UESTC 30 &&HDU 2544最短路【Floyd求解裸题】
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- HDU - 2544最短路 (dijkstra算法)
HDU - 2544最短路 Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以 ...
- HDU 3790最短路径问题 [最短路最小花费]
题目链接:[http://acm.hdu.edu.cn/showproblem.php?pid=3790] 最短路径问题 Time Limit: 2000/1000 MS (Java/Others) ...
- HDU(3790),最短路二级标准
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3790 最短路径问题 Time Limit: 2000/1000 MS (Java/Others) ...
- hdu 3790 最短路径问题(两个限制条件的最短路)
http://acm.hdu.edu.cn/showproblem.php?pid=3790 有两个条件:距离和花费.首先要求距离最短,距离相等的条件下花费最小. dijkstra,仅仅是在推断条件时 ...
随机推荐
- Zip-line Codeforces - 650D || 风筝
https://codeforces.com/contest/650/problem/D 原题? http://210.33.19.103/contest/1024/problem/2 4s 520M ...
- Unity Shader入门精要学习笔记 - 第8章 透明效果
转载自 冯乐乐的 <Unity Shader入门精要> 透明是游戏中经常要使用的一种效果.在实时渲染中要实现透明效果,通常会在渲染模型时控制它的透明通道.当开启透明混合后,当一个物体被渲染 ...
- Vue.js - day7
使用mui的tab-top-webview-main完成分类滑动栏 兼容问题 和 App.vue 中的 router-link 身上的类名 mui-tab-item 存在兼容性问题,导致tab栏失效, ...
- 从零开始利用vue-cli搭建简单音乐网站(五)
上一篇文章讲到的是如何利用mongoose从数据库读取数据然后更新页面,接下来要实现的就是用户注册登录功能,这个功能涉及到的东西太多了,今天只实现了登录功能,登陆之后更新导航条界面,最后效果如下: 登 ...
- vue从入门到开发--2-基本结构
1.App.vue 是根文件,所有的其他组件的执行均需要在此文件内导入并调用才能实现. import (导入其他组件) Test (其他组件的名字) from ‘./components/test’( ...
- mysql> set sql_mode='no_auto_value_on_zero';
mysql> set sql_mode='no_auto_value_on_zero';
- SM2-DE
SM2单证书认证 下端 导入根证书以及通用证书[具有签名和加密证书的功能]和远端的证书[获取远端公钥信息] 1.配置证书域 crypto ca identity gernal exit 2.通过复制粘 ...
- 【数据库-Azure SQL Database】如何创建事务复制将本地数据同步到 SQL Azure
Azure SQL DB 可以被配置成为 SQL Server 事务复制的一个订阅者( subscriber ). 主要应用场景有两种: 将您的数据迁移到 Azure SQL DB, 并且没有宕机时间 ...
- jmeter并发定时器
jmeter并发定时器
- 洛谷 P3183 [HAOI2016]食物链
题目描述 如图所示为某生态系统的食物网示意图,据图回答第1小题现在给你n个物种和m条能量流动关系,求其中的食物链条数.物种的名称为从1到n编号M条能量流动关系形如a1 b1a2 b2a3 b3.... ...