最短路径问题

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
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<iostream>
#include<cstdio>
#include<cstring>
using namespace std;const int maxn = 1005;
const int inf = 0x3f3f3f3f;
int n,m,cnt,map[maxn][maxn],cost[maxn][maxn];
int dis[maxn],price[maxn];
bool vis[maxn];void Dijkstra(int s,int t)
{int k = s,MIN;memset(vis,false,sizeof(vis));memset(dis,inf,sizeof(dis));memset(price,inf,sizeof(price));for(int i = 1; i <= n; i++)if(i != s){dis[i] = map[s][i];price[i] = cost[s][i];}vis[k] = true;for(int i = 1; i < n; i++){MIN = inf;for(int j = 1; j <= n; j++){if(vis[j] == true) continue;if(MIN > dis[j]){MIN = dis[j];k = j;}}vis[k] = true;for(int j = 1; j <= n; j++){if(vis[j] == true) continue;if(dis[j] > dis[k] + map[k][j]){dis[j] = dis[k] + map[k][j];price[j] = price[k] + cost[k][j];}else if(dis[j] == dis[k] + map[k][j] && price[j] > price[k] + cost[k][j])price[j] = price[k] + cost[k][j];}}printf("%d %d\n",dis[t],price[t]);
}int main()
{int u,v,len,c,s,t;while(scanf("%d%d",&n,&m),n+m){memset(map,inf,sizeof(map));memset(cost,inf,sizeof(cost));for(int i = 1; i <= m; i++){scanf("%d%d%d%d",&u,&v,&len,&c);if(map[u][v] > len){map[u][v] = map[v][u] = len;cost[u][v] = cost[v][u] = c;}else if(map[u][v] == len && cost[u][v] > c)cost[u][v] = cost[v][u] = c;}scanf("%d%d",&s,&t);Dijkstra(s,t);}return 0;
}

hdu 3790(最短路)相关推荐

  1. Hdu 1217 最短路.cpp

    题意: 各国的汇率兑换.. 给出各国之间汇率兑换的比例,然后问你是否可以通过不断地兑换最后挣钱.. 譬如美金兑换英镑 是0.5 英镑兑换法币是 10 法币兑换美金是 0.21 所以通过1美金兑换成0. ...

  2. hdu 2112 HDU Today 最短路(Dijkstra算法)

    HDU Today                                                                 Time Limit: 15000/5000 MS ...

  3. hdu 2544 最短路 (dijkstra)

    http://acm.hdu.edu.cn/showproblem.php?pid=2544 最简单的最短路了吧 改天试试优化版本的 #include<stdio.h> #include& ...

  4. HDU 2544 最短路(各种最短路算法的实现)

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=2544 题目: Problem Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂 ...

  5. HDU2112 HDU Today 最短路+字符串哈希

    HDU Today Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  6. HDU_2112 HDU Today—最短路(Dijkstra)

    点击这里 你便可以亲身去HDU体验一下 先看题目: HDU Today Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/3 ...

  7. 20211123 HDU练习 最短路和最小生成树

    一些模板题,都是dijkstra和prim 第一次写博客就复制黏贴实验报告非常抱歉,下次一定好好写.() 以后自己做的题也会写点题解吧  欢迎找我玩~ HDU Today Time Limit : 1 ...

  8. hdu 3790(最短路径问题 SPFA算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3790 最短路径问题 Time Limit: 2000/1000 MS (Java/Others)    ...

  9. HDU 3790 最短路径问题 裸跑dijkstra

    原题: http://acm.hdu.edu.cn/showproblem.php?pid=3790 题目: 最短路径问题 Time Limit: 2000/1000 MS (Java/Others) ...

最新文章

  1. ps怎么把一个颜色替换成另一个颜色_图标设计,用PS制作一款小清新的拟物时钟...
  2. 纵向表格_Excel如何把横向数据变纵向?教你一键快速实现
  3. python编程题三
  4. one thread one loop 思想
  5. Python select解析
  6. php serialize error at offset,PHP Notice: unserialize(): Error at offset XX of XX bytes
  7. 2016中国信息通信大数据大会召开在即,精彩看点提前揭晓
  8. 漫画:千万别在同事面前装逼
  9. 08-08 性能测试--分布式
  10. linux运维项目redis简历,redis简介
  11. Opencv求多边形或轮廓的凸包(Hull)
  12. 微信小程序开发的坑---tabBar
  13. python中type(12.34)_下面代码的输出结果是
  14. c语言课后第七章习题,c语言课后习题第7章函数
  15. Android开发 -使用腾讯TBS浏览服务 X5webview控件
  16. 微信小程序在线考试项目开发-注册登录功能
  17. WebVirtMgr + KVM 环境中的 Linux 虚拟机部署
  18. (34)[NIPS15] Teaching Machines to Read and Comprehend
  19. 2019中国区块链开发者大会 | Conflux 伍鸣:性能问题仍是区块链的应用阻碍
  20. 关于华三WLAN调试空口利用率居高不下的调试心得

热门文章

  1. 5家顶级投资方同台现身,力捧神策数据为哪般?
  2. 神策数据加入猿团程序员大牛卡,创客大礼包助力开发。
  3. CSS如何实现内凹角效果 By 大漠
  4. 写一个“特殊”的查询构造器 - (四、条件查询:复杂条件)
  5. powershell电脑加域退域
  6. C语言常见单链表面试题(2)
  7. 【原创】MySQL5.7 虚拟列实现表达式索引
  8. Linux/Centos服务器安装portsentry防恶意端口扫描
  9. 用Excel的VBA实现文本匹配与替换
  10. Windows server 2003 体系结构