最短路--Dijkstra算法 --HDU1790
//Dijkstra
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#define INF 0x3f3f3f3f
using namespace std;
struct node
{
int d,p;
} mat[1005][1005];
int main()
{
int x,y,n,m,a,b,s,t,i,j,k,d[1005],p[1005],minsd,minsp,visited[1005];
while(scanf("%d%d",&n,&m)!=EOF&&(n!=0||m!=0))
{
memset(visited,0,sizeof(visited));
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
{
mat[i][j].d=INF;
mat[i][j].p=INF;
}//初始化矩阵
for(i=1; i<=m; i++)
{
cin >> a >> b >> x >> y;//注意,把重复的边去掉,在这里WA两次
if(x < mat[a][b].d || (x == mat[a][b].d && y < mat[a][b].p))
{
mat[a][b].d = mat[b][a].d = x;
mat[a][b].p = mat[b][a].p = y;
}
}
cin >> s >> t;
visited[s]=1,d[s]=0;
for(i=1; i<=n; i++)
{
d[i]=mat[s][i].d;
p[i]=mat[s][i].p;
}//距离的初始化
for(i=1; i<n; i++)
{
minsp=minsd=INF;
for(j=1; j<=n; j++)
if(!visited[j]&&minsd>d[j])
{
minsd=d[j];
minsp=p[j];
k=j;
}//找出最小的边到达的顶点,和prim一样,贪心
visited[k]=1;
for(j=1; j<=n; j++)
if(!visited[j] && mat[k][j].d!=INF)
{
if(d[k]+mat[k][j].d<d[j])
{
d[j]= d[k]+mat[k][j].d;
p[j]= p[k]+mat[k][j].p;
}
else if(d[k]+mat[k][j].d==d[j]&&p[k]+mat[k][j].p<p[j])
p[j]= p[k]+mat[k][j].p;
else ;
}//更新到达的距离,由于不止要选择距离小,要选择话费小的,所以要判断两次
}
cout << d[t] << " " << p[t] << endl;
}
return 0;
}
最短路--Dijkstra算法 --HDU1790的更多相关文章
- 单源最短路dijkstra算法&&优化史
一下午都在学最短路dijkstra算法,总算是优化到了我能达到的水平的最快水准,然后列举一下我的优化历史,顺便总结总结 最朴素算法: 邻接矩阵存边+贪心||dp思想,几乎纯暴力,luoguTLE+ML ...
- 最短路Dijkstra算法的一些扩展问题
最短路Dijkstra算法的一些扩展问题 很早以前写过关于A*求k短路的文章,那时候还不明白为什么还可以把所有点重复的放入堆中,只知道那样求出来的就是对的.知其然不知其所以然是件容易引发伤痛的 ...
- ACM: HDU 2544 最短路-Dijkstra算法
HDU 2544最短路 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Descrip ...
- 单源最短路Dijkstra算法——matlab实现
迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径. 它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止. 基本思想 通过Dijk ...
- hdu2544 最短路 Dijkstra算法
最短路(Dijkstra算法模板题) Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- 单源最短路(Dijkstra算法)
#返回上一级 @Author: 张海拔 @Update: 2015-03-11 @Link: http://www.cnblogs.com/zhanghaiba/p/3514570.html Dijk ...
- 单源最短路——dijkstra算法
Dijkstra算法 1.定义概览 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止. 问 ...
- POJ 3268 Silver Cow Party 最短路—dijkstra算法的优化。
POJ 3268 Silver Cow Party Description One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbe ...
- POJ-3268-最短路(dijkstra算法)
Silver Cow Party Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 12494 Accepted: 5568 ...
随机推荐
- 读书笔记之 - javascript 设计模式 - 装饰者模式
本章讨论的是一种为对象增添特性的技术,它并不使用创建新子类这种手段. 装饰者模式可以透明地把对象包装在具有同样接口的另一对象之中,这样一来,你可以给一些方法添加一些行为,然后将方法调用传递给原始对象. ...
- (转)log4j日志级别设置成DEBUG时输出Html代码等问题:
log4j日志级别设置成DEBUG时输出Html代码等问题: 问题: log4j日志级别设置成DEBUG时会输出很多信息,包括一些Html代码 解决方案: log4j的控制是树形,所以在log4j.p ...
- session cookie 相结合实现
数据库配置文件 config.php <?php// config.php 数据库连接文件define('DB_HOST', 'localhost');define('DB_USER', 'ro ...
- oracle新建表空间及用户
本文介绍命令模式(管理员权限): 1.以管理员权限打开命令控制台,输入下面命令: Sqlplus sys/管理员账户名称(就是DBA账户) as sysdba;(记得分号哦,有时没有的话会报错) 2. ...
- [CSS]cursor鼠标样式
用css控制鼠标样式的语法如下: <span style="cursor:*">文本或其它页面元素</span> 把 * 换成如下15个效果的一种: ...
- CENTOS elasticsearch plugin install:Failed: SSLException[java.security.ProviderException,解决
安装Elasticsearch插件时总报SSLException yum upgrade nss 解决
- GPS定位学习笔记
********************************* GPS定位简介 ********************************** 1. iOS SDK提供两个框架来实现位置服务 ...
- matlab常用小函数(一)
(第1维为对每一列操作,第2维维对每一行操作) sum 求和操作 max 求最大值操作 sum:求和操作 sum(A):矩阵A按列向求和(每一列求和),结果为一个行向量 sum(A,2):矩阵A按行向 ...
- [MVC] WebSecurity在VS2013中不识别
使用VS2013创建了MVC4项目以后,在filters中添加了类InitializeSimpleMembershipAttribute ,不能识别UserContext和WebSecurity,发现 ...
- 删除数据表和清空数据表的内容(保存表结构)的SHELL脚本
A,删除指定数据库的所有数据表 #!/bin/bash # 删除mysql中所有表 # 示例: # Usage: ./script user password dbnane # Usage: ./sc ...