hdu 3790 最短路径问题(两个限制条件的最短路)
http://acm.hdu.edu.cn/showproblem.php?pid=3790
有两个条件:距离和花费。首先要求距离最短,距离相等的条件下花费最小。
dijkstra,仅仅是在推断条件时多考虑了花费。
注意重边。
#include <stdio.h>
#include <algorithm>
#include <set>
#include <map>
#include <vector>
#include <math.h>
#include <string.h>
#include <stack>
#include <queue>
#define LL long long
#define _LL __int64
using namespace std; const int INF = 0x3f3f3f3f;
const int maxn = 1010;
int Map[maxn][maxn],cost[maxn][maxn];
int n,m;
int dis1[maxn],dis2[maxn]; void init()
{
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
{
if(i == j)
{
Map[i][j] = 0;
cost[i][j] = 0;
}
else
{
Map[i][j] = INF;
cost[i][j] = INF;
}
}
}
} void dijkstra(int s, int t)
{
int vis[maxn];
memset(dis1,INF,sizeof(dis1));
memset(dis2,INF,sizeof(dis2));
memset(vis,0,sizeof(vis)); for(int i = 1; i <= n; i++)
{
dis1[i] = Map[s][i];
dis2[i] = cost[s][i];
}
vis[s] = 1; for(int i = 1; i <= n; i++)
{
int M1= INF, M2 = INF, pos; for(int j = 1; j <= n; j++)
{
if(vis[j]) continue;
if(dis1[j] < M1 || (dis1[j] == M1 && dis2[j] < M2))
{
M1 = dis1[j];
M2 = dis2[j];
pos = j;
}
} vis[pos] = 1; for(int j = 1; j <= n; j++)
{
if(vis[j]) continue;
int tmp1 = dis1[pos] + Map[pos][j];
int tmp2 = dis2[pos] + cost[pos][j];
if(tmp1 < dis1[j] || (tmp1 == dis1[j] && tmp2 < dis2[j]))
{
dis1[j] = tmp1;
dis2[j] = tmp2;
}
}
}
} int main()
{
while(~scanf("%d %d",&n,&m))
{
if(n == 0 || m == 0) break;
init();
int a,b,d,p;
while(m--)
{
scanf("%d %d %d %d",&a,&b,&d,&p);
if(Map[a][b] == INF && cost[a][b] == INF)
{
Map[a][b] = Map[b][a] = d;
cost[a][b] = cost[b][a] = p;
}
else if(d < Map[a][b] || (Map[a][b] == d && cost[a][b] > p))
{
Map[a][b] = Map[b][a]= d;
cost[a][b] = cost[b][a] = p;
}
}
scanf("%d %d",&a,&b);
dijkstra(a,b);
printf("%d %d\n",dis1[b],dis2[b]);
}
return 0;
}
hdu 3790 最短路径问题(两个限制条件的最短路)的更多相关文章
- 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最短路径问题 [最短路最小花费]
题目链接:[http://acm.hdu.edu.cn/showproblem.php?pid=3790] 最短路径问题 Time Limit: 2000/1000 MS (Java/Others) ...
- hdu 3790 最短路径问题(双重权值,dijkstra算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3790 题目大意:题意明了,输出最短路径及其花费. 需要注意的几点:(1)当最短路径相同时,输出最小花费 ...
- HDU 3790 最短路径问题 (最短路)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3790 简单的最短路问题,这题听说有重边.我用spfa和dijkstra写了一遍,没判重边,速度都差不多 ...
- #HDU 3790 最短路径问题 【Dijkstra入门题】
题目: 最短路径问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 题解报告:hdu 3790 最短路径问题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3790 Problem Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你起 ...
- hdu 3790 最短路径问题(迪杰斯特拉)
最短路径问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- hdu 3790 最短路径dijkstra(多重权值)
最短路径问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
随机推荐
- Jquery 设置style:display 通过ID隐藏区域
$("#id").css('display','none'); $("#id").css('display','block'); 或 $("#id&q ...
- sed命令使用记录
背景:文件A,文件B,文件格式一致,有两列,第一列为key,第二列为value. 目的:将文件A中的内容插入到文件B中,不能在最后,不能有重复key(我的key和value用tab键分割) 实现:我的 ...
- Java读取excel指定sheet中的各行数据,存入二维数组,包括首行,并打印
1. 读取 //读取excel指定sheet中的各行数据,存入二维数组,包括首行 public static String[][] getSheetData(XSSFSheet sheet) thro ...
- C++标准转换运算符 --四种
具体归纳如下: reinterpret_cast 函数将一个类型的指针转换为另一个类型的指针. 这种转换不用修改指针变量值存放格式(不改变指针变量值),只需在编译时重新解释指针的类型就可做到.rein ...
- ps闪闪发光的字 教程+自我练习
本教程的文字效果非常经典.不仅是效果出色,创作思路及制作手法都堪称完美.作者并没有直接使用纹理素材,纹理部分都是用滤镜来完成.这需要很强的综合能力,非常值得学习和借鉴.最终效果 我的: 1.创建一个新 ...
- Linux-head,tail用法
linux ---tail命令 linux中tail命令---用于查看文件内容 最基本的是cat.more和less. 1. 如果你只想看文件的前5行,可以使用head命令,如: head -5 /e ...
- LeetCode(1) -Two Sum
题目要求很简单,给你一个数组(例如,nums = [2,7,11,15])和一个target(target = 9),找到数组里两个数相加后能得到target的这两个数的index.在本例中,返回的应 ...
- (phpmyadmin error)Login without a password is forbidden by configuration (see AllowNoPassword) in ubuntu
1.Go to /etc/phpmyadmin/config.inc.php and open it your favorite editor. 2.Search for below line of ...
- 麒麟OS剽窃
今年对于我们的IT行业来说可以算是耻辱的一年. 首先是“汉芯丑闻”,上海交大研制了一个所谓的国内第一个完全拥有自主知识产 权的DSP芯片(数字信号微处理器)——“汉芯”,研制人陈进教授以此领取政府一亿 ...
- component to string
component to string string to component ObjectTextToBinary ObjectBinaryToText ReadComponent #include ...