Problem Description
给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的。
 
Input
输入n,m,点的编号是1~n,然后是m行,每行4个数 a,b,d,p,表示a和b之间有一条边,且其长度为d,花费为p。最后一行是两个数 s,t;起点s,终点。n和m为0时输入结束。

(1<n<=1000, 0<m<100000, s != t)
 
Output
输出 一行有两个数, 最短距离及其花费。
 
Sample Input
3 2
1 2 5 6
2 3 4 5
1 3
0 0
 
Sample Output
9 11
 
#include<stdio.h>
#include<iostream>
#include<queue>
using namespace std; typedef struct n1
{
int x,dist,mony;
friend bool operator<(n1 a,n1 b)
{
if(b.dist>a.dist)
return b.dist<a.dist;
else if(b.dist==a.dist&&b.mony>=a.mony)
return b.mony<a.mony;
}
}node;
node map[1005][1005],N[1005];
int s,t,min_dist,min_mony;
int vist[1005][1005];
void set(int n,int m)
{
int i,j,n1,n2,d,p;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
map[i][j].dist=0;vist[i][j]=0;
}
}
while(m--)
{
scanf("%d%d%d%d",&n1,&n2,&d,&p);
if(map[n1][n2].dist==d)
{
if(map[n1][n2].mony>p)
map[n1][n2].mony=map[n2][n1].mony=p;
}
else if(map[n1][n2].dist==0||map[n1][n2].dist>d)
{
map[n1][n2].dist=map[n2][n1].dist=d;
map[n1][n2].mony=map[n2][n1].mony=p;
}
}
scanf("%d%d",&s,&t);
}
void BFS(int n)
{
priority_queue<node> Q;
node q,p;
int i;
q.mony=0; q.dist=0;q.x=t;
Q.push(q);
while(!Q.empty())
{
q=Q.top();
Q.pop();
if(q.x==s)
{
min_dist=q.dist;min_mony=q.mony;
break;
}
for(i=1;i<=n;i++)
if(map[q.x][i].dist&&!vist[q.x][i])
{
vist[q.x][i]=vist[i][q.x]=1;//这样就不会走重复的路
p.dist=map[q.x][i].dist+q.dist;
p.mony=map[q.x][i].mony+q.mony;
p.x=i;//printf("%d %d %d\n",p.x,p.dist,p.mony);
Q.push(p);
}
}
}
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)>0&&(n||m))
{
set(n,m);
BFS(n);
printf("%d %d\n",min_dist,min_mony);
}
}

hdu3790最短路径问题 (用优先队列实现的)的更多相关文章

  1. hdu3790最短路径问题(BFS+优先队列)

    Problem Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的.   Inp ...

  2. HDU-3790 最短路径问题

    最短路径问题 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submis ...

  3. hdu-3790最短路径问题

    Problem Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的.   Inp ...

  4. HDU-3790最短路径问题,第十遍终于过了~

    最短路径问题                                                                   Time Limit: 2000/1000 MS (J ...

  5. hdu3790最短路径问题

    题意是这种,给你一个无向图, 每条边有距离和花费, 假设从第一个点到末点的最短路不唯一, 则输出最短路长度以及最少的花费. 否则输出长度和花费即可. 用传说中的链式向前星优化了一下边的存储, 写了个s ...

  6. hdu-3790 最短路径问题(双重权值)

    Problem Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的. Input ...

  7. HDU-3790 最短路径问题(双重权值)

    Problem Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的.   Inp ...

  8. hdu-3790 最短路径问题---dijkstra两重权值

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3790 题目大意: 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到 ...

  9. 最短路径-Dijkstra+Floyd+Spfa

    Dijkstra算法: Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止.Dijkstra ...

随机推荐

  1. 用反射,将DataRow行转为Object对象

    /// <summary> /// 反射辅助类 /// </summary> public class ReflectionHelper { /// <summary&g ...

  2. perl 取类里的成员变量

    [root@wx03 test]# cat x1.pm package x1; use Data::Dumper; sub new { my $self ={}; my $invocant = shi ...

  3. Emmet插件

    p{font-size: 18px; color: #666;} body{background-color:#F3F3F3} .code{color:#3974C3;font-size: 14px; ...

  4. ORACLE11.2.0 SQLPLUS 报 error while loading shared libraries

    相应的环境平台: OS: Linux TEST11G 2.6.18-8.el5 #1 SMP Fri Jan 26 14:15:21 EST 2007 i686 i686 i386 GNU/Linux ...

  5. 安装windows7导致Ubuntu启动项消失的问题的解决

    系统原来是Ubuntu14,前两天安装win7后,启动直接是win7.也就是Ubuntu的启动项消失了. 在windows下尝试非常多方法,都以失败告终,最后选择Ubuntu下boot-repair软 ...

  6. Silverlight技术调查(4)——完成的调查结果

    原文 Silverlight技术调查(4)——完成的调查结果 客户端使用Silverlight+DXperience,可以在线编辑各种常见文本及富文本文档(doc.docx.rtf.txt.html… ...

  7. 基于visual Studio2013解决面试题之0506取和为m的可能组合

     题目

  8. 正则表达式概述与JAVA中正则表达式的应用

    编程或者电脑使用过程中,经常需要对字符串进行 匹配,查找,替换,判断.如果单纯用代码 if () ,whlie 什么的进行比较复杂麻烦.正则表达式是一种强大灵活的文本处理工具,专门对字符串进行匹配,查 ...

  9. android调用音乐播放器,三种方

    小弟想请问一下.怎样在自己写的程序中调用系统的音乐播放器呢. 我在google上搜索了.主要是有两种方法,可是都不是我想要的. 第一种是.使用mp3音乐文件的uri.和intent,进行调用.可是这样 ...

  10. uva 1390 - Interconnect(期望+哈希+记忆化)

    option=com_onlinejudge&Itemid=8&page=show_problem&category=514&problem=4136&mosm ...