最短路径问题
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 ...
随机推荐
-
Python JPype 在 Win7 下安装与使用
JPype 是 Python调用 Java 代码的模块,需要Java SE Runtime Environment (JRE)的支持. 个人安装环境: Windows 7 64bit + Python ...
-
JS控制TABLE表格在任意一行下面添加一行(有待完善)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
-
2016 版 Laravel 系列入门教程(一)【最适合中国人的 Laravel 教程】
本教程示例代码见: https://github.com/johnlui/Learn-Laravel-5 在任何地方卡住,最快的办法就是去看示例代码. 本文基于 Laravel 5.2 版本,无奈 5 ...
-
jquery鼠标移入某区域屏蔽鼠标滚轮 滚动滚动条
<script> var firefox = navigator.userAgent.indexOf('Firefox') != -1; function MouseWheel(e) { ...
-
LNMP 环境发布项目
发布地址 /srv/www/wx 默认mysql 外部访问权限关闭,需开启 另:注意数据库没有导入,index.php会是空白 chmod -R 777 /var var的权限就变成777,var下的 ...
-
Pexpect模块的安装
Pexpect模块的安装 下载地址:https://pypi.python.org/pypi/pexpect/ 解压后在目录下运行:python ./setup.py install (必须是root ...
-
RX学习笔记:JavaScript数组操作
RX学习笔记:JavaScript数组操作 2016-07-03 增删元素 unshift() 在数组开关添加元素 array.unshift("value"); array.un ...
-
LeetCode OJ 63. Unique Paths II
Follow up for "Unique Paths": Now consider if some obstacles are added to the grids. How m ...
-
Java学习笔记之——LinkedList
LinkedList 底层结构:链表 1. API: 除了ArrayList中有的方法以外,LinkedList还有几个扩展方法 void addFirst(E e) 在该列表开头插入指定的元素. v ...
-
Python 音视频方面资源大全
自然语言处理 用来处理人类语言的库. NLTK:一个先进的平台,用以构建处理人类语言数据的 Python 程序.官网 jieba:中文分词工具.官网 langid.py:独立的语言识别系统.官网 Pa ...