hdu3790最短路径问题(BFS+优先队列)
(1<n<=1000, 0<m<100000, s != t)
1 2 5 6
2 3 4 5
1 3
0 0
#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;
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);
}
}
/*
5 7
1 2 5 5
2 3 4 5
1 3 4 6
3 4 2 6
3 5 4 7
4 5 2 6
1 3 4 4
1 5
8 11
5 7
1 2 5 5
2 3 4 5
1 3 4 6
3 4 2 2
3 5 4 7
4 5 2 4
1 3 4 4
1 5
8 10
*/
hdu3790最短路径问题(BFS+优先队列)的更多相关文章
- hdu3790最短路径问题 (用优先队列实现的)
Problem Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的. Inp ...
- hdu-1026(bfs+优先队列)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1026 题意:输入n,m和一个n*m的矩阵, .表示通路: x表示墙: n表示有一个怪物,消灭它需要n个 ...
- POJ 1724 ROADS(BFS+优先队列)
题目链接 题意 : 求从1城市到n城市的最短路.但是每条路有两个属性,一个是路长,一个是花费.要求在花费为K内,找到最短路. 思路 :这个题好像有很多种做法,我用了BFS+优先队列.崔老师真是千年不变 ...
- hdu 1242 找到朋友最短的时间 (BFS+优先队列)
找到朋友的最短时间 Sample Input7 8#.#####. //#不能走 a起点 x守卫 r朋友#.a#..r. //r可能不止一个#..#x.....#..#.##...##...#.... ...
- HDU 1428 漫步校园 (BFS+优先队列+记忆化搜索)
题目地址:HDU 1428 先用BFS+优先队列求出全部点到机房的最短距离.然后用记忆化搜索去搜. 代码例如以下: #include <iostream> #include <str ...
- hdu1839(二分+优先队列,bfs+优先队列与spfa的区别)
题意:有n个点,标号为点1到点n,每条路有两个属性,一个是经过经过这条路要的时间,一个是这条可以承受的容量.现在给出n个点,m条边,时间t:需要求在时间t的范围内,从点1到点n可以承受的最大容量... ...
- BFS+优先队列+状态压缩DP+TSP
http://acm.hdu.edu.cn/showproblem.php?pid=4568 Hunter Time Limit: 2000/1000 MS (Java/Others) Memo ...
- POJ - 2312 Battle City BFS+优先队列
Battle City Many of us had played the game "Battle city" in our childhood, and some people ...
- HDU 1242 -Rescue (双向BFS)&&( BFS+优先队列)
题目链接:Rescue 进度落下的太多了,哎╮(╯▽╰)╭,渣渣我总是埋怨进度比别人慢...为什么不试着改变一下捏.... 開始以为是水题,想敲一下练手的,后来发现并非一个简单的搜索题,BFS做肯定出 ...
- hdu 2102 A计划 具体题解 (BFS+优先队列)
题目链接:pid=2102">http://acm.hdu.edu.cn/showproblem.php?pid=2102 这道题属于BFS+优先队列 開始看到四分之中的一个的AC率感 ...
随机推荐
- python3中文转码方法
python3中的转码,必须是byte类型的,str类型的会返回未定义方法. 示例代码如下 doc = pq(start_html.content) print("orig text=&qu ...
- windows7+cuda8+cudnn6+python36+tensorflow_gpu1.4配置
下载文件 cuda8,自行网上下载online的安装包就好了 cudnn6 python36 tensorflow_gpu 下载地址:https://pan.baidu.com/s/1mjwOi5E ...
- Java基础82 jsp中的EL表达式(网页知识)
1.EL表达式的作用 EL表达式的作用:向浏览器输出域对象中的变量值或者表达式计算结果.语法:${变量或者表达式} 注: Jsp的核心语法:jsp的表达式<%= %>和jsp的脚本< ...
- tomcat运行内存溢出问题
tomcat 运行内存配置优化 /opt/apache-tomcat-7.0.65/bin/catalina.sh:JAVA_OPTS="$JAVA_OPTS -Dfile.encoding ...
- Google Chrome中的高性能网络-[译]《转载》
以下内容是"The Performance of Open Source Applications" (POSA)的草稿, 也是The Architecture of Open S ...
- C/C++之static
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static.前者应用于普通变量和函数,不涉及类:后者主要说明static在类中的作用. 1.面向过程设计中的st ...
- MySQL学习笔记:repeat、loop循环
一.repeat循环 # ---- repeat ---- DELIMITER $$ CREATE PROCEDURE test_repeat() BEGIN ; REPEAT ; UNTIL a E ...
- 【直播预告】云栖直播:阿里热修复产品HotFix2.0升级详解
全面——你知道吗?1891年,卡尔森纳做出的第一把瑞士军刀,只有螺丝刀和开罐器.经过一代又一代能工巧匠的打磨,这把刀陆续增加了锯子.剪刀.镊子.放大镜.改锥,甚至内藏激光.LED手电筒.USB记忆碟等 ...
- BCD码
BCD码(Binary-Coded Decimal)亦称二进码十进数或二-十进制代码,是用4位二进制数来表示1位十进制数中的0~9这10个数码,用一种使用二进制编码十进制的数字编码形式.BCD码这种 ...
- (使用通过混淆+自己第三方保留成功混淆)AndroidStudio 混淆打包
原文:https://blog.csdn.net/mazhidong/article/details/64820838 AndroidStudio中的项目可以用compile的形式引入github上的 ...