hdu-3790-最短路径问题(dijkstra算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3790
在main函数开头加上 ios::sync_with_stdio(false) 就行了,理论上这个办法和用scanf差不多(学长教我的= =)不过我自己用的scanf是200多ms,用上面那句是500多ms orz
#include<iostream>
#include<cstdio>
#include<cstring>
#define INF 1000001
using namespace std;
int dis[1010],cost[1010][1010],visit[1010],map[1010][1010],cos[1010];
int main(void)
{
int n,m,a,b,d,p,i,j,s,t,min,z;
while(scanf("%d%d",&n,&m)==2&&(n+m))
{
memset(visit,0,sizeof(visit));
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
map[i][j]=INF;
cost[i][j]=INF;
}
}
while(m--)
{
scanf("%d%d%d%d",&a,&b,&d,&p);
//cin>>a>>b>>d>>p;
if(d<map[a][b])
{
map[a][b]=map[b][a]=d;
cost[a][b]=cost[b][a]=p;
}
else if(d==map[a][b]&&p<cost[a][b])
{
cost[a][b]=cost[b][a]=p;
}
}
scanf("%d%d",&s,&t);
//cin>>s>>t;
visit[s]=1;
for(i=1; i<=n; i++)
{
dis[i]=map[s][i];
cos[i]=cost[s][i];
}
for(i=1; i<=n; i++)
{
min=INF;
for(j=1; j<=n; j++)
{
if(!visit[j]&&min>dis[j])
{
z=j;
min=dis[j];
}
}
visit[z]=1;
for(j=1; j<=n; j++)
{
if(!visit[j]&&dis[j]>dis[z]+map[z][j])
{
dis[j]=dis[z]+map[z][j];
cos[j]=cos[z]+cost[z][j];
}
else if(!visit[j]&&dis[j]==dis[z]+map[z][j]&&cos[j]>cos[z]+cost[z][j])
{
cos[j]=cos[z]+cost[z][j];
}
}
}
printf("%d %d\n",dis[t],cos[t]);
}
return 0;
}
hdu-3790-最短路径问题(dijkstra算法)的更多相关文章
- ACM: HDU 3790 最短路径问题-Dijkstra算法
HDU 3790 最短路径问题 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Des ...
- hdu 2680 最短路径(dijkstra算法+多源最短路径单源化求最小值)这题有点意思
Choose the best route Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- HDU - 3790 最短路径问题 (dijkstra算法)
HDU - 3790 最短路径问题 Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费 ...
- 单源最短路径(dijkstra算法)php实现
做一个医学项目,当中在病例评分时会用到单源最短路径的算法.单源最短路径的dijkstra算法的思路例如以下: 如果存在一条从i到j的最短路径(Vi.....Vk,Vj),Vk是Vj前面的一顶点.那么( ...
- 【算法设计与分析基础】25、单起点最短路径的dijkstra算法
首先看看这换个数据图 邻接矩阵 dijkstra算法的寻找最短路径的核心就是对于这个节点的数据结构的设计 1.节点中保存有已经加入最短路径的集合中到当前节点的最短路径的节点 2.从起点经过或者不经过 ...
- 数据结构与算法--最短路径之Dijkstra算法
数据结构与算法--最短路径之Dijkstra算法 加权图中,我们很可能关心这样一个问题:从一个顶点到另一个顶点成本最小的路径.比如从成都到北京,途中还有好多城市,如何规划路线,能使总路程最小:或者我们 ...
- 最短路径 | 深入浅出Dijkstra算法(一)
参考网址: https://www.jianshu.com/p/8b3cdca55dc0 写在前面: 上次我们介绍了神奇的只有五行的 Floyd-Warshall 最短路算法,它可以方便的求得任意两点 ...
- 经典树与图论(最小生成树、哈夫曼树、最短路径问题---Dijkstra算法)
参考网址: https://www.jianshu.com/p/cb5af6b5096d 算法导论--最小生成树 最小生成树:在连通网的所有生成树中,所有边的代价和最小的生成树,称为最小生成树. im ...
- POJ 3790 最短路径问题(Dijkstra变形——最短路径双重最小权值)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3790 Problem Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你 ...
- ACM: HDU 2544 最短路-Dijkstra算法
HDU 2544最短路 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Descrip ...
随机推荐
- Utils 工具 推送
work_weipa_百度云推送 2014-09-05 17:55 7人阅读 评论(0) 收藏 举报 问题:怎么实现消息推送? 回答:下载sdk,根据文档操作即可 资料:http://develope ...
- Activity与Service之间交互并播放歌曲的实现代码
Activity与Service之间交互并播放歌曲,为了方便,我把要播放的歌曲定死了,大家可以灵活改进 MService: 复制代码代码如下: package com.tiantian.test;im ...
- 【WiFi密码破解详细图文教程】ZOL仅此一份 详细介绍从CDlinux U盘启动到设置扫描破解-破解软件论坛-ZOL中关村在线
body { font-family: Microsoft YaHei UI,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-ser ...
- Spring 笔记1
1.在java开发领域,Spring相对于EJB来说是一种轻量级的,非侵入性的Java开发框架,曾经有两本很畅销的书<Expert one-on-one J2EE Design and Deve ...
- Android网络开发之OkHttp--基本用法POST
1.OkHttp框架使用了OkIo框架,不要忘记下OkIo.jar 2.通过POST访问网络,和通过GET访问网络基本相同,多了设置请求参数的过程.主要分为五步: (1).声明并实例化一个OkHttp ...
- TOCContro控件
TOCControl控件使用的是用伙伴控件中的数据地图,它控制图层是否在伙伴控件空显示以及和伙伴控件在符号上保持一致,TOCControl为用户提供了一个交互式的环境,如果TOCControl控件的伙 ...
- phpstorm 正则匹配删除注释行(替换注释行为空行)
使用phpstorm 来编写php 和javascript 代码,感觉还是不错的,用得也很舒服. 遇到了一个需求,有时候在阅读框架源代码的时候 , 想过滤(删除)掉源代码中的注释行,如果手动逐行删除显 ...
- Counting Haybales
Counting Haybales 题目描述 Farmer John is trying to hire contractors to help rearrange his farm, but so ...
- PAT (Advanced Level) 1014. Waiting in Line (30)
简单模拟题. #include<iostream> #include<cstring> #include<cmath> #include<algorithm& ...
- c语言基础编程
作业: 1.二进制,八进制,十进制之间的相互转换 2.测试转义字符 3.测试强制类型转换 4.测试赋值运算符 = += -= *= /= %= <<= >>= ^= |= & ...