POJ 3790 最短路径问题(Dijkstra变形——最短路径双重最小权值)
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=3790
(1<n<=1000, 0<m<100000, s != t)
1 2 5 6
2 3 4 5
1 3
0 0
#include<stdio.h>
int e1[][],e2[][];
int inf=,n,m,s,t;
void Dijkstra();
int main()
{
int i,j,t1,t2,t3,t4;
while(scanf("%d%d",&n,&m), n+m != )
{
for(i=;i<=n;i++)//全部初始化为inf
for(j=;j<=n;j++)
e1[i][j]=e2[i][j]=inf;//i和j for(i=;i<=m;i++)
{
scanf("%d%d%d%d",&t1,&t2,&t3,&t4);
if(e1[t1][t2] > t3)//存储的时候就去重,先保证路径最短,否则如
//果相等且花费变小则更新花费
{
e1[t1][t2]=e1[t2][t1]=t3;//双向
e2[t1][t2]=e2[t2][t1]=t4;
}
else if(e1[t1][t2] == t3 && e2[t1][t2] > t4)
e2[t1][t2]=e2[t2][t1]=t4;
}
scanf("%d%d",&s,&t); Dijkstra();
}
return ;
}
void Dijkstra()
{
int i,j,u,v,min,d[],c[],book[];
for(i=;i<=n;i++)
{
d[i]=e1[s][i];
c[i]=e2[s][i];
}
for(i=;i<=n;i++)
book[i]=;//初始化为0
book[s]=; for(i=;i<=n-;i++)
{
min=inf;
for(j=;j<=n;j++)
{//找到距离s点最近的尚未访问的点
if(!book[j] && d[j] < min)
{
min=d[j];
u=j;
}
}
book[u]=;
for(v=;v<=n;v++)//遍历每个顶点
{
if(!book[v] && e1[u][v] < inf)
{//加入点U后,更新每个顶点到s的距离为最近,便于下次查找
if(d[v] > d[u]+e1[u][v])
{//和之前的去重一样,在保证最短路径且花费减少时 才更新最小花费
d[v]=d[u]+e1[u][v];
c[v]=c[u]+e2[u][v];
}
else if(d[v] == d[u]+e1[u][v] && c[v] > c[u]+e2[u][v])
c[v] = c[u]+e2[u][v];
}
}
}
printf("%d %d\n",d[t],c[t]);
}
POJ 3790 最短路径问题(Dijkstra变形——最短路径双重最小权值)的更多相关文章
- POJ 2253 Frogger(Dijkstra变形——最短路径最大权值)
题目链接: http://poj.org/problem?id=2253 Description Freddy Frog is sitting on a stone in the middle of ...
- POJ 1797 Heavy Transportation(Dijkstra变形——最长路径最小权值)
题目链接: http://poj.org/problem?id=1797 Background Hugo Heavy is happy. After the breakdown of the Carg ...
- POJ.1797 Heavy Transportation (Dijkstra变形)
POJ.1797 Heavy Transportation (Dijkstra变形) 题意分析 给出n个点,m条边的城市网络,其中 x y d 代表由x到y(或由y到x)的公路所能承受的最大重量为d, ...
- POJ 3565 Ants 【最小权值匹配应用】
传送门:http://poj.org/problem?id=3565 Ants Time Limit: 5000MS Memory Limit: 65536K Total Submissions: ...
- POJ 2195 Going Home 【二分图最小权值匹配】
传送门:http://poj.org/problem?id=2195 Going Home Time Limit: 1000MS Memory Limit: 65536K Total Submis ...
- 【POJ 2400】 Supervisor, Supervisee(KM求最小权匹配)
[POJ 2400] Supervisor, Supervisee(KM求最小权匹配) Supervisor, Supervisee Time Limit: 1000MS Memory Limit ...
- POJ 3255 Roadblocks (Dijkstra求最短路径的变形)(Dijkstra求次短路径)
Roadblocks Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 16425 Accepted: 5797 Descr ...
- NYOJ 1248 海岛争霸(Dijkstra变形——最短路径最大权值)
题目链接: http://acm.nyist.net/JudgeOnline/problem.php?pid=1248 描述 神秘的海洋,惊险的探险之路,打捞海底宝藏,激烈的海战,海盗劫富等等.加勒比 ...
- POJ - 2253 Frogger(Dijkstra变形题)
题意: 题目撰写者的英语真是艰难晦涩,看了别人题解,才知道这题题意. 两个forger 一个froger 要蹦到另外一个froger处,他们的最短距离是这样定义的 : The frog distanc ...
随机推荐
- lesson - 3 ls /cd /path /alias /快捷键
内容概要: 1. 命令ls -l 详细信息-a 查看隐藏的文件或目录-d 只看目录本身,不列出目录下面的文件和目录-t 以时间先后排序 2 目录结构/bin, /sbin, /usr/bi ...
- 树链剖分( 洛谷P3384 )
我们有时候遇到这样一类题目,让我们维护树上路径的某些信息,这个时候发现我们无法用线段树或者树状数组来维护这些信息,那么我们就有着一种新的数据结构,树剖:将一棵树划分成若干条链,用数据结构去维护每条链, ...
- Python新式类继承的C3算法
在Python的新式类中,方法解析顺序并非是广度优先的算法,而是采用C3算法,只是在某些情况下,C3算法的结果恰巧符合广度优先算法的结果. 可以通过代码来验证下: class NewStyleClas ...
- IndentationError: unexpected indent
都知道python是对格式要求很严格的,写了一些python但是也没发现他严格在哪里,今天遇到了IndentationError: unexpected indent错误我才知道他是多么的严格. ...
- LindDotNetCore~入门基础
回到目录 LindDotNetCore基础介绍 运行环境 配置文件 服务的注册 配置文件的注册 服务的使用 配置文件的使用 运行环境 vs2017+.netcore2.0,vs需要升级到最新包 配置文 ...
- HTML + CSS短标题(二,三,四文字长度)两端对齐的方式
今天切图碰到了一个看似好弄,却并不好弄的文本两端对齐问题.如图1-1
- TurnipBit:DIY音乐盒教程实例
一款可以自己DIY的音乐盒,要什么曲子,就自己谱曲啦!为他(她)制作一首他喜欢的音乐,来代表您的心意,也可以让他自己来制作他最爱的音乐哦!更可以带孩子一起体验谱写欢快的音乐. 最近发现一很好玩的中国式 ...
- python基础(三)编码,深浅copy
编码,深浅copy encode,decode在python2中使用的一些迷糊,python3中更容易理解 要理解encode和decode,首先我们要明白编码,字符和二进制的相关概念,简单来说,计算 ...
- 【Tarjan缩点】POJ2186 Popular Cows
Popular Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 35644 Accepted: 14532 De ...
- 【ASP.NET 系列】浅谈缓存技术在ASP.NET中的运用
本篇文章虽不谈架构,但是Cache又是架构中不可或缺的部分,因此,在讲解Cache的同时,将会提及到部分架构知识,关于架构部分,读者可以不用理解,或者直接跳过涉及架构部分的内容 你只需关心Cache即 ...