HDU3790-最短路径问题
最短路径问题
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 23311 Accepted Submission(s): 6963
(1<n<=1000, 0<m<100000, s != t)
3 2
1 2 5 6
2 3 4 5
1 3
0 0
9 11
#include<iostream>
#include<algorithm>
#include<string>
#include<cstring>
#include<cmath>
#include<cstdio>
using namespace std; const int MAXN=1005;
const int INF=0x3f3f3f3f; int Graph[MAXN][MAXN];
int Cost[MAXN][MAXN];
int s,e;//开始,结束
int m,n;//边数,顶点数
int d[MAXN];//保存最小距离
int c[MAXN];//保存最小话费
bool used[MAXN];//是否已经加入 void Dijkstra()
{
int v;
int minpath;
for(int i=1;i<=n;i++)
{
d[i]=Graph[s][i];
c[i]=Cost[s][i];
}
memset(used,false,sizeof(used));
used[s]=true;
for(int i=1;i<=n;i++)
{
if(used[e])
{
break;
}
minpath=INF;
for(int j=1;j<=n;j++)
{
if(!used[j]&&d[j]<minpath)
{
minpath=d[j];
v=j;
}
}
used[v]=true;
for(int j=1;j<=n;j++)
{
if(!used[j]&&Graph[v][j]<INF)
{
if(d[j]>d[v]+Graph[v][j])
{
d[j]=d[v]+Graph[v][j];
c[j]=c[v]+Cost[v][j];
}
else if(d[j]==d[v]+Graph[v][j])
{
if(c[j]>c[v]+Cost[v][j])
{
c[j]=c[v]+Cost[v][j];
}
}
}
}
}
printf("%d %d\n",d[e],c[e]);
} int main()
{
while(scanf("%d %d",&n,&m)!=EOF&&n+m)
{
memset(Graph,INF,sizeof(Graph));
memset(Cost,INF,sizeof(Cost));
for(int i=1;i<=n;i++)
{
Graph[i][i]=0;
Cost[i][i]=0;
}
int v,u,len,money;
for(int i=1;i<=m;i++)
{
scanf("%d%d%d%d",&v,&u,&len,&money);
if(Graph[v][u]>len)
{
Graph[v][u]=len;Graph[u][v]=len;
Cost[v][u]=money;Cost[u][v]=money;
}
else if(Graph[v][u]==len)
{
if(Cost[v][u]>money)
{
Cost[v][u]=money;Cost[u][v]=money;
}
}
}
scanf("%d %d",&s,&e);
Dijkstra();
}
return 0;
}
HDU3790-最短路径问题的更多相关文章
- HDU-3790 最短路径问题
最短路径问题 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submis ...
- hdu-3790最短路径问题
Problem Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的. Inp ...
- HDU-3790最短路径问题,第十遍终于过了~
最短路径问题 Time Limit: 2000/1000 MS (J ...
- hdu3790最短路径问题 (用优先队列实现的)
Problem Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的. Inp ...
- hdu3790最短路径问题
题意是这种,给你一个无向图, 每条边有距离和花费, 假设从第一个点到末点的最短路不唯一, 则输出最短路长度以及最少的花费. 否则输出长度和花费即可. 用传说中的链式向前星优化了一下边的存储, 写了个s ...
- hdu-3790 最短路径问题(双重权值)
Problem Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的. Input ...
- HDU-3790 最短路径问题(双重权值)
Problem Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的. Inp ...
- hdu3790最短路径问题(BFS+优先队列)
Problem Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的. Inp ...
- hdu-3790 最短路径问题---dijkstra两重权值
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3790 题目大意: 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到 ...
- 最短路径-Dijkstra+Floyd+Spfa
Dijkstra算法: Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止.Dijkstra ...
随机推荐
- 解决 iframe 在 ios 上不能滚动的问题
HTML代码在使用IFRAME或者其他HTML元素时,你需要使用一个元素(如DIV)来包装他们: <div class="scroll-wrapper"> <i ...
- 对Spring事务的一些误解
提起spring事务,就会让人联想起四大基本特征,五个隔离级别,七大传播特性.相信大多数人都知道这些东西,但是知道是一回事情,能用好真的是另一回事了.在使用Spring事务的时候,我曾遇到过几个比较严 ...
- jquery中常用的方法和注意点
1.通过js获取url中的参数值 //通过参数名称name获取url参数function GetQueryString(name) { var reg = new RegExp("(^|&a ...
- http 500错误怎么解决方法
出现500错误的原因是很多的,一般来说,如果程序出错,那么在浏览器内会返回给用户一个友好的错误提示,统一称之为服务器500错误. 解决的方法就是您必须在http中能够正确的获得错误信息,方法为:请打开 ...
- js中的路由匹配
routie插件:http://projects.jga.me/routie/ /** * 路由 * @example * routie( * { * '/':function(){ }, * '/m ...
- HTML学习笔记 cs动画基础(分列效果可用于做瀑布流) 第十五节 (原创) 参考使用表
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Problem E: 动物爱好者
Problem E: 动物爱好者 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 882 Solved: 699[Submit][Status][Web ...
- 自建梯子教程:vultr+ssr+SwitchyOmega
1 综述 在饱受蓝灯挂掉之苦半个月后,终于决定自己搭建VPS服务器FQ了.虽然网上VPS服务器教程很多,但是我按照那些教程弄好VPS服务器总是不稳定,用着用着就不能用了.这应该是这次GFW升级带来的后 ...
- vs2015添加T4模版
<#@ template language="C#" debug="false" hostspecific="true"#> & ...
- Spring知识整理
Spring简介 Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,用来管理和维护bean,其中的特点是IOC(控制反转) DI(依赖注入) AOP(面向切面) 容易和其他框 ...