hdu 3790 最短路径问题
最短路径问题
(1<n<=1000, 0<m<100000, s != t)
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
#define M 1005
#define INF 99999int map[M][M],mat[M][M];
int n,m;void Dijkstra(int s,int t)
{int i,j,k;int min;int d[M],l[M],v[M];for(i=1;i<=n;i++) {d[i]=map[s][i]; //距离l[i]=mat[s][i]; //费用}memset(v,0,sizeof(v));v[s]=1; for(i=1;i<n;i++) // 遍历n-1个节点{min=INF;for(j=1;j<=n;j++){if(!v[j] && d[j] <min){min=d[j];k=j;}}v[k]=1;for(j=1;j<=n;j++){if(!v[j] && d[j]>d[k]+map[k][j]) //距离和费用同一时候更新{d[j]=d[k]+map[k][j];l[j]=l[k]+mat[k][j];}else if(d[j]==d[k]+map[k][j]) {if(l[j]>l[k]+mat[k][j])l[j]=l[k]+mat[k][j];}}}printf("%d %d\n",d[t],l[t]);
}int main ()
{int a,b,d,p,s,t;int i,j;while(scanf("%d%d",&n,&m)!=EOF){if(n==0&&m==0) break;for(i=1;i<=n;i++) //初始化for(j=1;j<=n;j++){map[i][j]=INF;mat[i][j]=INF; }for(i=0;i<m;i++){scanf("%d%d%d%d",&a,&b,&d,&p);if(map[a][b]>d){map[a][b]=map[b][a]=d;mat[a][b]=mat[b][a]=p;}else if(map[a][b]==d) // 路径长度同样时。取最小费用if(mat[a][b]>p) mat[a][b]=mat[b][a]=p;}scanf("%d%d",&s,&t);Dijkstra(s,t); //起点和终点}return 0;
}
转载于:https://www.cnblogs.com/lxjshuju/p/7130660.html
hdu 3790 最短路径问题相关推荐
- hdu 3790(最短路径问题 SPFA算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3790 最短路径问题 Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 3790 最短路径问题 裸跑dijkstra
原题: http://acm.hdu.edu.cn/showproblem.php?pid=3790 题目: 最短路径问题 Time Limit: 2000/1000 MS (Java/Others) ...
- hdu 3790 最短路径dijkstra(多重权值)
最短路径问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- HDU 3790 最短路径问题 (dijkstra)
最短路径问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- HDU 3790 最短路径问题
最短路径问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- HDU - 3790 最短路径问题
给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的. Input输入n,m,点的编号是1~n,然后是m行 ...
- HDU 3790 最短路径问题 (SPFA)
转载请注明出处:http://blog.csdn.net/a1dark 分析:比一般最短路多了一个花费.多加一个判断即可.用的SPFA.这道题让我搞清楚了以前定义INF为啥爆的问题.受益颇多. #in ...
- 【HDU - 3790】最短路径问题(DIjkstra算法 双权值)
题干: 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的. Input 输入n,m,点的编号是1~n, ...
- hdu 3790(最短路)
最短路径问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem D ...
最新文章
- Elastic:为 Elasticsearch 启动 https 访问使数据访问更安全
- 数学建模第四节2020.4.24-5.3补
- linux停止jar程序,Linux 启动停止SpringBoot jar 程序部署Shell 脚本的方法
- linux l显示详细信息,fdisk -l显示信息详解
- python3中urlopen_解决python3 urllib中urlopen报错的问题
- 4、Node.js REPL(交互式解释器)
- Django 博客教程(三):创建应用和编写数据库模型
- git 可视化工具_Git的基本使用(二)
- multi source replication mysql,Disabling Multi-Source Replication in MySQL 5.7
- 为什么要用3个通道来表示法线?
- 1 CentOS下磁盘LVM扩容
- Codeforces Round #256 (Div. 2)——Multiplication Table
- sketch文件导出没有背景色怎么办? sketch背景色消失的解决办法
- Axure图片不显示
- x86汇编指令集大全(带注释)
- Android更改开机画面
- 实训任务4:Hadoop综合操作
- 晨读播报一:快手与抖音之间的较量
- 上班一个月挣10万,居然全靠它...
- C语言实现通讯录(含文件保存)
热门文章
- 以普通用户启动的Vim如何保存需要root权限的文件
- 信息化基础建设 工作流开发
- 双向链表的C++类模板实现
- Linux容器间共享内存,C++容器模板在共享内存中的使用
- java线程画动图闪,Android中利用画图类和线程画出闪烁的心形,android心形,package com....
- Mybatis foreach遍历
- python 鸭子类型_Python中的鸭子输入是什么?
- python bokeh_使用Bokeh将交互性添加到您的Python图中
- devops 工具_衡量DevOps成功的13种工具
- 在线生成艺术字_生成艺术:如何修改绘画