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 ...
随机推荐
- vue2.0路由变化1
路由的步骤 1.定义组件 var Home={ template:'<h3>我是主页</h3>' }; var News={ template:'<h3>我是新闻& ...
- UWP 应用通知Notifications
之前说UWP 使用OneDrive云存储2.x api(二)[全网首发],微识别实现了上传下载的功能,那么为了给用户更上一层楼的体验,那就是在上传下载完成之后,弹出一通知Notifications. ...
- golang sql database drivers
https://github.com/golang/go/wiki/SQLDrivers SQL database drivers The database/sql and database/sql/ ...
- 【原创】java NIO FileChannel 学习笔记 新建一个FileChannel
首先使用FileChannel 的open方法获取一个FileChannel对象.下面这段代码是FileChannel中open方法的代码. public static FileChannel ope ...
- web打印总结
一.打印样式 区别显示和打印的样式 使用media="print"控制打印时的样式,如下: 打印时不显示打印按钮,设置页面宽度 <style media="prin ...
- JAVA有哪些数据类型?基本数据类型各占多少个字节
java的数据类型分为:基本数据类型和引用数据类型. 基本数据类型各占多少个字节: 数据类型 字节 默认值 byte 1 0 short 2 0 int 4 0 long 8 0 float 4 0. ...
- Java学习笔记7(简易的超市库存管理系统示例)
用以前学过的知识,可以简单地做一个超市库存管理系统: 定义一个商品类: public class FruitItem { int ID; String name; double price; int ...
- java socket 和.net socket 通讯 demo
结束符协议"##" import java.io.BufferedReader; import java.io.IOException; import java.io.InputS ...
- linked lists in .NET
链表是数据结构中存储数据的一种形式.分为单向链表和双向链表以及循环链表.LinkedList是泛型链表,用节点存取,节点类型为LinkedListNode<T>,每个节点都有Next和Pr ...
- java.io与网络通信
文件IO java.io.File是用于操作文件或目录的类: File file = new File("hello.txt"); 实例化File时不关心路径的目标并不会去读取文件 ...