题目链接:http://acm.swust.edu.cn/problem/842/

Time limit(ms): 1000        Memory limit(kb): 10000
 

Description

2012新的暑期集训开始了,一切都还相当不错,但是有一个问题成为了同学们的难题,那就是从实验室到食堂时,天气是非常的炎热,以至于大家都尽量避免从没有遮阴的地方走过,但是某些路径又不得不从没有遮阴的地方走过,所以现在难题出来了,给予你一些单向路段,让你找出从实验室到食堂,晒太阳最少的路径长度,以及该条路径的总长度。如果存在多条最少晒太阳的路径,则总长度要求最短。

输入n和m,表明是有n<=1000个转折点,m条路径,然后输入m(m<=100000)条路径,每一条路径包括4个数据,s,e,dis1 , dis2,分别表示该条路径的起点,

终点,路径总长度,以及没有遮阴路径的长度(dis1>=dis2);

结果保证小于2^31

Input

输出两个值,第一个值是没有遮阴路径的最小总长度,第二个是该条路径的总长度,如果没有遮阴路径的最小总长度相等,

Output

输出二者中总路径长度最小的那条路径的长度值。

Sample Input
    

3 4
1 2 10 2
1 2 11 1
2 3 5 2
2 3 7 1
4 4
1 2 10 2
2 4 10 3
1 3 5 3
3 4 16 2
Sample Output
2 18
5 20
 
解题思路:起点为1,终点为n,两个数组,一个存贮路径长度,一个是最少晒到阳光的长度,然后用Dijkstra算法就是~~~~
 
代码如下:
 #include <iostream>
#include <cstring>
const int maxn = ;
const int inf = 0x3f3f3f3f;
using namespace std; int diaA[maxn][maxn], disB[maxn][maxn], n, m, x, y, d1, d2; void init()
{
for (int i = ; i <= n; i++){
for (int j = i; j <= n; j++)
diaA[i][j] = diaA[j][i] = disB[i][j] = disB[j][i] = inf;
}
}
void Dijkstra(){
int dis[maxn], pay[maxn], vis[maxn], i, j, k;
memset(vis, , sizeof(vis));
for (i = ; i <= n; i++){
dis[i] = diaA[][i];
pay[i] = disB[][i];
}
vis[] = ;
for (i = ; i <= n; i++){
int min = inf;
for (j = ; j <= n; j++){
if (!vis[j] && pay[j] < min){
min = pay[j];
k = j;
}
}
vis[k] = ;
for (j = ; j <= n; j++){
if (!vis[j]){
if (pay[k] + disB[k][j]<pay[j] || pay[k] + disB[k][j] == pay[j] && dis[j]>dis[k] + diaA[k][j]){
pay[j] = pay[k] + disB[k][j];
dis[j] = dis[k] + diaA[k][j];
}
}
}
}
cout << pay[n] << ' ' << dis[n] << endl;
} int main(){
while (cin >> n >> m){
init();
for (int i = ; i < m; i++){
cin >> x >> y >> d1 >> d2;
if (d2 < disB[x][y] || d2 == disB[x][y] && d1 < diaA[x][y]){
diaA[x][y] = d1;
disB[x][y] = d2;
}
}
Dijkstra();
}
return ;
}

[Swust OJ 842]--实验室和食堂(最短路,Dijkstra算法)的更多相关文章

  1. 单源最短路dijkstra算法&&优化史

    一下午都在学最短路dijkstra算法,总算是优化到了我能达到的水平的最快水准,然后列举一下我的优化历史,顺便总结总结 最朴素算法: 邻接矩阵存边+贪心||dp思想,几乎纯暴力,luoguTLE+ML ...

  2. 最短路Dijkstra算法的一些扩展问题

    最短路Dijkstra算法的一些扩展问题     很早以前写过关于A*求k短路的文章,那时候还不明白为什么还可以把所有点重复的放入堆中,只知道那样求出来的就是对的.知其然不知其所以然是件容易引发伤痛的 ...

  3. ACM: HDU 2544 最短路-Dijkstra算法

    HDU 2544最短路 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Descrip ...

  4. 单源最短路Dijkstra算法——matlab实现

    迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径. 它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止. 基本思想 通过Dijk ...

  5. hdu2544 最短路 Dijkstra算法

    最短路(Dijkstra算法模板题) Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  6. 单源最短路(Dijkstra算法)

    #返回上一级 @Author: 张海拔 @Update: 2015-03-11 @Link: http://www.cnblogs.com/zhanghaiba/p/3514570.html Dijk ...

  7. 单源最短路——dijkstra算法

    Dijkstra算法 1.定义概览 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止. 问 ...

  8. 哈理工 oj 2122 旅行(map + 最短路dij算法)

    旅行 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 18(6 users) Total Accepted: 3(3 users) Ra ...

  9. hdu-2544-最短路(dijkstra算法模板)

    题目链接 题意很清晰,入门级题目,适合各种模板,可用dijkstra, floyd, Bellman-ford, spfa Dijkstra链接 Floyd链接 Bellman-Ford链接 SPFA ...

随机推荐

  1. bind和live

    <div> <ul> <li></li> <li></li> <li></li> <li>& ...

  2. linux怎样修改用户权限

    ls -l  查看目录下的文件详细信息 ll 同上 whoami 功能说明:先似乎用户名称. 语 法:whoami [--help][--version] 补充说明:显示自身的用户名称,本指令相当于执 ...

  3. 5.7.1.2 eval() 方法

    现在我们介绍最后一个方法,这大概是ECMAScript语言中最强大的一个方法:eval().eval()方法就想一个完整的ECMAScript解析器,它只接受一个参数,即要执行的ECMAScript( ...

  4. (Problem 62)Cubic permutations(待续)

    The cube, 41063625 (3453), can be permuted to produce two other cubes: 56623104 (3843) and 66430125 ...

  5. Protel99se教程九:protel99se中PCB设计的高级应用

    在上一节我们PCB资源网的protel99se教程当中,我们给大家讲解了在protel99se进行原理图设计中的一些高级应用技巧,在这一节protel99se教程当中,我们将给大家讲解的是,在prot ...

  6. 程序员眼中的UML

    --克服用例图的恐惧 在实际工作中,大部分程序员很少接触到需求分析,即使有需求分析,也是草草了事,没有用正规的方式来表达,所以一般程序员使用用例图的机会是不多的.但是却又常常在各种媒体上看见用例图,于 ...

  7. software quality assurance 常见问题收录

    1. What is Quality? Quality means, “meeting requirements.” ..Whether or not the product or service d ...

  8. Ext JS学习第六天 Ext_window组件(三)

    此文用来记录学习笔记: 今天再来一个例子巩固一下学习的window: –例2: 在window中添加子组件,并讲解常用查找组件的方式: •重点分析:该实例主要针对于组件的查找进行详细的讲解,在以后的应 ...

  9. 在后台获取Textarea控件的值

    使用Request.Form方法 1.在前台设置name 属性 <textarea name="Content">hdjfhjdfhdj</textarea> ...

  10. ansible变量

    ansible变量 (部分内容摘自互联网,非官方,描述不一定正确) 变量种类: 内置变量facts: 自定义变量: 命令行传递的变量 roles传递的变量 主机变量 组变量 内置变量facts: 由远 ...